# ibm/idmt architecture

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

- Interactive diagram: https://gitdiagram.com/ibm/idmt
- Repository: https://github.com/ibm/idmt

## Overview

IDMT is a Java data-migration tool whose documented core is command-line extraction configured by IBMExtractConfig; IBMExtractGUI2 provides a GUI entry point. The principal workflow is to configure source and target settings, generate extraction commands, move data—optionally in parallel—and load it into a target. The tree also shows SQL conversion and deployment, validation/reporting, and monitoring capabilities. The README identifies the core entry points and broad capabilities; most subsystem wiring is not established by the sampled source, so uncertain links are omitted.

Main entry points: [`src/ibm/IBMExtractConfig.java`](https://github.com/ibm/idmt/blob/master/src/ibm/IBMExtractConfig.java) (Migration config), [`src/ibm/IBMExtractGUI2.java`](https://github.com/ibm/idmt/blob/master/src/ibm/IBMExtractGUI2.java) (Desktop GUI), [`src/ibm/GenerateExtract.java`](https://github.com/ibm/idmt/blob/master/src/ibm/GenerateExtract.java) (Extract generation), [`src/ibm/SelectTables.java`](https://github.com/ibm/idmt/blob/master/src/ibm/SelectTables.java) (Table selection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_config["Configuration and entry"]
  node_config["Migration config"]
  node_gui["Desktop GUI"]
end

subgraph group_migration["Migration workflow"]
  node_extract["Extract generation"]
  node_select["Table selection<br/>[SelectTables.java]"]
  node_parallel["Parallel scripts"]
  node_db2load["DB2 loading<br/>[RunDB2Load.java]"]
  node_nzload["Netezza loading<br/>[RunNZLoad.java]"]
end

subgraph group_conversion["Conversion and deployment"]
  node_sql_lexer["SQL conversion"]
  node_lexer["SQL parsing<br/>[Parser.java]"]
  node_deploy["Object deployment<br/>[DeployObjects.java]"]
end

subgraph group_operations["GUI and operations"]
  node_checks["Data validation<br/>[DataCheck.java]"]
  node_reports["Load reporting<br/>[LoadReport.java]"]
  node_monitor["Load monitoring<br/>[NZLoadStatus.java]"]
  node_editor["SQL editor"]
end

node_cli_user(("CLI user"))
node_gui_user(("GUI user"))
node_source_db[("Source databases")]
node_target_db[("Target database")]

node_cli_user -->|"configures"| node_config
node_gui_user -->|"uses"| node_gui
node_config -->|"generates commands"| node_extract
node_extract -->|"extracts data"| node_source_db
node_select -->|"selects tables"| node_source_db
node_parallel -->|"runs extraction"| node_source_db
node_db2load -->|"loads data"| node_target_db
node_nzload -->|"loads data"| node_target_db
node_lexer -->|"parses SQL"| node_sql_lexer
node_deploy -->|"deploys objects"| node_target_db
node_checks -->|"checks data"| node_target_db
node_reports -->|"reports load"| node_target_db
node_monitor -->|"checks status"| node_target_db
node_gui -.->|"embeds editor"| node_editor

click node_config "https://github.com/ibm/idmt/blob/master/src/ibm/IBMExtractConfig.java"
click node_gui "https://github.com/ibm/idmt/blob/master/src/ibm/IBMExtractGUI2.java"
click node_extract "https://github.com/ibm/idmt/blob/master/src/ibm/GenerateExtract.java"
click node_select "https://github.com/ibm/idmt/blob/master/src/ibm/SelectTables.java"
click node_parallel "https://github.com/ibm/idmt/blob/master/src/ibm/GenerateParallelScripts.java"
click node_db2load "https://github.com/ibm/idmt/blob/master/src/ibm/RunDB2Load.java"
click node_nzload "https://github.com/ibm/idmt/blob/master/src/ibm/RunNZLoad.java"
click node_sql_lexer "https://github.com/ibm/idmt/blob/master/src/ibm/lexer/OraToDb2Converter.java"
click node_lexer "https://github.com/ibm/idmt/blob/master/src/ibm/lexer/Parser.java"
click node_deploy "https://github.com/ibm/idmt/blob/master/src/ibm/DeployObjects.java"
click node_checks "https://github.com/ibm/idmt/blob/master/src/ibm/DataCheck.java"
click node_reports "https://github.com/ibm/idmt/blob/master/src/ibm/LoadReport.java"
click node_monitor "https://github.com/ibm/idmt/blob/master/src/ibm/NZLoadStatus.java"
click node_editor "https://github.com/ibm/idmt/blob/master/src/jsyntaxpane/DefaultSyntaxKit.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_config,node_gui,node_cli_user,node_gui_user toneBlue
class node_extract,node_select,node_parallel,node_db2load,node_nzload,node_source_db,node_target_db toneAmber
class node_sql_lexer,node_lexer,node_deploy toneMint
class node_checks,node_reports,node_monitor,node_editor toneRose
```

## Components

### Configuration and entry

- [Migration config](https://github.com/ibm/idmt/blob/master/src/ibm/IBMExtractConfig.java): `src/ibm/IBMExtractConfig.java`
- [Desktop GUI](https://github.com/ibm/idmt/blob/master/src/ibm/IBMExtractGUI2.java): `src/ibm/IBMExtractGUI2.java`

### Migration workflow

- [Extract generation](https://github.com/ibm/idmt/blob/master/src/ibm/GenerateExtract.java): `src/ibm/GenerateExtract.java`
- [Table selection](https://github.com/ibm/idmt/blob/master/src/ibm/SelectTables.java): `src/ibm/SelectTables.java`
- [Parallel scripts](https://github.com/ibm/idmt/blob/master/src/ibm/GenerateParallelScripts.java): `src/ibm/GenerateParallelScripts.java`
- [DB2 loading](https://github.com/ibm/idmt/blob/master/src/ibm/RunDB2Load.java): `src/ibm/RunDB2Load.java`
- [Netezza loading](https://github.com/ibm/idmt/blob/master/src/ibm/RunNZLoad.java): `src/ibm/RunNZLoad.java`

### Conversion and deployment

- [SQL conversion](https://github.com/ibm/idmt/blob/master/src/ibm/lexer/OraToDb2Converter.java): `src/ibm/lexer/OraToDb2Converter.java`
- [SQL parsing](https://github.com/ibm/idmt/blob/master/src/ibm/lexer/Parser.java): `src/ibm/lexer/Parser.java`
- [Object deployment](https://github.com/ibm/idmt/blob/master/src/ibm/DeployObjects.java): `src/ibm/DeployObjects.java`

### GUI and operations

- [Data validation](https://github.com/ibm/idmt/blob/master/src/ibm/DataCheck.java): `src/ibm/DataCheck.java`
- [Load reporting](https://github.com/ibm/idmt/blob/master/src/ibm/LoadReport.java): `src/ibm/LoadReport.java`
- [Load monitoring](https://github.com/ibm/idmt/blob/master/src/ibm/NZLoadStatus.java): `src/ibm/NZLoadStatus.java`
- [SQL editor](https://github.com/ibm/idmt/blob/master/src/jsyntaxpane/DefaultSyntaxKit.java): `src/jsyntaxpane/DefaultSyntaxKit.java`

### Other components

- **CLI user**
- **GUI user**
- **Source databases**
- **Target database**

## Connections

- CLI user → Migration config: configures
- GUI user → Desktop GUI: uses
- Migration config → Extract generation: generates commands
- Extract generation → Source databases: extracts data
- Table selection → Source databases: selects tables
- Parallel scripts → Source databases: runs extraction
- DB2 loading → Target database: loads data
- Netezza loading → Target database: loads data
- SQL parsing → SQL conversion: parses SQL
- Object deployment → Target database: deploys objects
- Data validation → Target database: checks data
- Load reporting → Target database: reports load
- Load monitoring → Target database: checks status
- Desktop GUI → SQL editor: embeds editor
