pulsaride-transform
A complete migration runtime for Oracle → PostgreSQL. Declarative transforms, dependency-aware execution, production-grade DLQ, and an observability layer that tells you whether you can cut over safely.
What it does
pulsaride-transform gives Java teams a YAML-driven pipeline for reading rows from Oracle, applying declarative field mappings, expression evaluations, filters, and DQ expectations, then writing to PostgreSQL — with built-in Level 1 (count/checksum) and Level 2 (sampled row diff) validation, a production-grade dead-letter queue, dependency-aware deferral, and H4 observability that explains each run in plain language.
Key capabilities
- Declarative YAML — field mappings, filters, expressions, and DQ
expectrules - depends_on — automatic deferral when FK targets haven't migrated yet; rows replay on arrival
- Spring auto-configuration — one dependency, zero
@Beandefinitions - CDC mode — Debezium connector for near-real-time incremental migration
- Dead-letter queue — rejected rows stored with reason and run ID; inspectable from the dashboard
- Built-in monitoring dashboard at
/pulsaride— live progress, run history, DLQ summary - L1 validation — row count comparison exposed via Spring Actuator
- L2 validation — deterministic sampling + bi-directional field diff
- Hot-reload of YAML rules in development mode
- File-driven pipeline —
pulsaride-pipeline.ymldefines the full lifecycle as a DAG
Add to your project
<dependency> <groupId>com.pulsaride</groupId> <artifactId>pulsaride-transform</artifactId> <version>2.1.0</version> </dependency>
Requires Java 21+. Apache 2.0 license.
Quick navigation
Quickstart
Up and running in 5 minutes
YAML Reference
Full schema — fields, filters, depends_on, expect rules
Spring Integration
Auto-configuration mechanics; what disappears, what activates
Validation
L1 row count, L2 sampled diff, DLQ inspection
Monitoring
Dashboard, WebSocket feed, Actuator health, Grafana
Why Pulsaride
The glue code problem and the three promises
Changelog
Release history