# ibm-datapower/datapower-configuration-manager architecture

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

- Interactive diagram: https://gitdiagram.com/ibm-datapower/datapower-configuration-manager
- Repository: https://github.com/ibm-datapower/datapower-configuration-manager

## Overview

DCM manages IBM DataPower configuration through an Ant command-line interface and an UrbanCode Deploy plugin. The principal workflow is to invoke a management task, send its SOMA request over HTTPS, and consume the device response; configuration import/export, file transfer, domain and service operations, and backup/restore are distinct capability areas. XSLT transforms and XML utilities support configuration processing. The README documents the interfaces and capabilities; sampled source and the SOURCE INDEX ground the internal call links, while unsampled task wiring is not inferred.

Main entry points: [`src/com/ibm/dcm/SomaUtils.java`](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/SomaUtils.java) (SOMA XML Utilities), [`src/com/ibm/dcm/taskWdp.java`](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskWdp.java) (Management Tasks), [`src/com/ibm/dcm/SSLConnection.java`](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/SSLConnection.java) (HTTPS Connection), [`src/com/ibm/dcm/Soma.java`](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/Soma.java) (SOMA Operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User Interfaces"]
  node_antcli["Ant CLI"]
  node_ucdplugin["UCD Plugin<br/>[plugin.xml]"]
end

subgraph group_operations["Device Operations"]
  node_wdp["Management Tasks<br/>[taskWdp.java]"]
  node_soma["SOMA Operations<br/>[Soma.java]"]
  node_upload["File Upload<br/>[taskDpupload.java]"]
  node_download["File Download"]
  node_importexport["Import Export"]
  node_domainservice["Domain and Service"]
  node_backuprestore["Backup Restore"]
end

subgraph group_processing["Configuration Processing"]
  node_configxslt["Config Transforms"]
  node_xslt["XSLT Task<br/>[taskNxslt.java]"]
  node_xslcache["Stylesheet Cache<br/>[XSLCache.java]"]
  node_xmlstore["XML Output<br/>[taskStorexml.java]"]
end

subgraph group_transport["Transport and Utilities"]
  node_connection["HTTPS Connection<br/>[SSLConnection.java]"]
  node_params["Named Parameters<br/>[NamedParams.java]"]
  node_xmlutils["SOMA XML Utilities<br/>[SomaUtils.java]"]
  node_namespaces["XML Namespaces<br/>[MyNamespaces.java]"]
  node_base64["Base64 Codec<br/>[Base64.java]"]
end

node_operator(("Operator"))

node_operator -->|"runs tasks"| node_antcli
node_operator -->|"uses plugin"| node_ucdplugin
node_antcli -.->|"invokes task"| node_wdp
node_wdp -->|"dispatches operation"| node_soma
node_wdp -->|"creates connection"| node_connection
node_wdp -->|"builds parameters"| node_params
node_wdp -->|"extracts response"| node_xmlutils
node_soma -->|"sends requests"| node_connection
node_soma -->|"uses parameters"| node_params
node_soma -->|"builds envelopes"| node_xmlutils
node_connection -->|"returns parameters"| node_params
node_upload -->|"sends upload"| node_connection
node_upload -->|"checks response"| node_xmlutils
node_upload -->|"encodes content"| node_base64
node_download -->|"requests file"| node_connection
node_download -->|"parses response"| node_xmlutils
node_download -->|"decodes content"| node_base64
node_xslt -->|"gets transformer"| node_xslcache
node_xslt -->|"normalizes output"| node_xmlutils
node_xmlutils -->|"sets XPath namespaces"| node_namespaces

click node_antcli "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/dcm-taskdefs.ant.xml"
click node_ucdplugin "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/main/zip/plugin.xml"
click node_wdp "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskWdp.java"
click node_soma "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/Soma.java"
click node_upload "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskDpupload.java"
click node_download "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskDpdownload.java"
click node_importexport "https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src"
click node_domainservice "https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src"
click node_backuprestore "https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src"
click node_configxslt "https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src"
click node_xslt "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskNxslt.java"
click node_xslcache "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/XSLCache.java"
click node_xmlstore "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskStorexml.java"
click node_connection "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/SSLConnection.java"
click node_params "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/NamedParams.java"
click node_xmlutils "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/SomaUtils.java"
click node_namespaces "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/MyNamespaces.java"
click node_base64 "https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/Base64.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_antcli,node_ucdplugin toneBlue
class node_wdp,node_soma,node_upload,node_download,node_importexport,node_domainservice,node_backuprestore toneAmber
class node_configxslt,node_xslt,node_xslcache,node_xmlstore toneMint
class node_connection,node_params,node_xmlutils,node_namespaces,node_base64 toneRose
class node_operator toneIndigo
```

## Components

### User Interfaces

- [Ant CLI](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/dcm-taskdefs.ant.xml): `src/dcm-taskdefs.ant.xml`
- [UCD Plugin](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/main/zip/plugin.xml): `src/main/zip/plugin.xml`

### Device Operations

- [Management Tasks](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskWdp.java): `src/com/ibm/dcm/taskWdp.java`
- [SOMA Operations](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/Soma.java): `src/com/ibm/dcm/Soma.java`
- [File Upload](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskDpupload.java): `src/com/ibm/dcm/taskDpupload.java`
- [File Download](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskDpdownload.java): `src/com/ibm/dcm/taskDpdownload.java`
- [Import Export](https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src): `src`
- [Domain and Service](https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src): `src`
- [Backup Restore](https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src): `src`

### Configuration Processing

- [Config Transforms](https://github.com/ibm-datapower/datapower-configuration-manager/tree/master/src): `src`
- [XSLT Task](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskNxslt.java): `src/com/ibm/dcm/taskNxslt.java`
- [Stylesheet Cache](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/XSLCache.java): `src/com/ibm/dcm/XSLCache.java`
- [XML Output](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/taskStorexml.java): `src/com/ibm/dcm/taskStorexml.java`

### Transport and Utilities

- [HTTPS Connection](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/SSLConnection.java): `src/com/ibm/dcm/SSLConnection.java`
- [Named Parameters](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/NamedParams.java): `src/com/ibm/dcm/NamedParams.java`
- [SOMA XML Utilities](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/SomaUtils.java): `src/com/ibm/dcm/SomaUtils.java`
- [XML Namespaces](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/MyNamespaces.java): `src/com/ibm/dcm/MyNamespaces.java`
- [Base64 Codec](https://github.com/ibm-datapower/datapower-configuration-manager/blob/master/src/com/ibm/dcm/Base64.java): `src/com/ibm/dcm/Base64.java`

### Other components

- **Operator**

## Connections

- Operator → Ant CLI: runs tasks (evidence: `README.md`)
- Operator → UCD Plugin: uses plugin (evidence: `README.md`)
- Ant CLI → Management Tasks: invokes task
- Management Tasks → SOMA Operations: dispatches operation (evidence: `src/com/ibm/dcm/taskWdp.java`)
- Management Tasks → HTTPS Connection: creates connection (evidence: `src/com/ibm/dcm/taskWdp.java`)
- Management Tasks → Named Parameters: builds parameters (evidence: `src/com/ibm/dcm/taskWdp.java`)
- Management Tasks → SOMA XML Utilities: extracts response (evidence: `src/com/ibm/dcm/taskWdp.java`)
- SOMA Operations → HTTPS Connection: sends requests (evidence: `src/com/ibm/dcm/Soma.java`)
- SOMA Operations → Named Parameters: uses parameters (evidence: `src/com/ibm/dcm/Soma.java`)
- SOMA Operations → SOMA XML Utilities: builds envelopes (evidence: `src/com/ibm/dcm/Soma.java`)
- HTTPS Connection → Named Parameters: returns parameters (evidence: `src/com/ibm/dcm/SSLConnection.java`)
- File Upload → HTTPS Connection: sends upload (evidence: `src/com/ibm/dcm/taskDpupload.java`)
- File Upload → SOMA XML Utilities: checks response (evidence: `src/com/ibm/dcm/taskDpupload.java`)
- File Upload → Base64 Codec: encodes content (evidence: `src/com/ibm/dcm/taskDpupload.java`)
- File Download → HTTPS Connection: requests file (evidence: `src/com/ibm/dcm/taskDpdownload.java`)
- File Download → SOMA XML Utilities: parses response (evidence: `src/com/ibm/dcm/taskDpdownload.java`)
- File Download → Base64 Codec: decodes content (evidence: `src/com/ibm/dcm/taskDpdownload.java`)
- XSLT Task → Stylesheet Cache: gets transformer (evidence: `src/com/ibm/dcm/taskNxslt.java`)
- XSLT Task → SOMA XML Utilities: normalizes output (evidence: `src/com/ibm/dcm/taskNxslt.java`)
- SOMA XML Utilities → XML Namespaces: sets XPath namespaces (evidence: `src/com/ibm/dcm/SomaUtils.java`)
