Introduction
Relevant source files
The following files were used as context for generating this wiki page:
The flext-target-oracle-wms project is a specialized Singer Target designed to facilitate data loading into Oracle Warehouse Management System (WMS) Cloud SaaS environments. It leverages the FLEXT ecosystem—including flext-core, flext-observability, and flext-oracle-wms—to provide a production-grade integration that handles high-volume data streams with enterprise security and performance standards.
Sources: README.md:9-11, examples/README.md:20-25
System Architecture
The target is built upon a modular architecture that separates data transformation, schema mapping, and table management. It processes Singer protocol messages (SCHEMA, RECORD, STATE) and translates them into Oracle-compatible structures.
Component Overview
| Component | Responsibility |
|---|---|
| CatalogManager | Manages the internal representation of streams and their schemas. |
| WMSTableManager | Handles stream-to-table name mapping, ensuring Oracle compliance (e.g., uppercased names). |
| WMSDataTransformer | Normalizes incoming record data and applies type conversions. |
| WMSTypeConverter | Converts Singer scalar types to Oracle-friendly payload formats. |
| WMSSchemaMapper | Maps Singer schema definitions to Oracle DDL-friendly structures. |
Sources: src/flext_target_oracle_wms/_utilities/helpers.py:16-118, tests/unit/test_target.py:108-115
Data Processing Flow
The following diagram illustrates the sequence of operations when the target receives messages through the Singer protocol.
The data flow ensures that records are only processed if a corresponding schema has been registered, preventing orphaned data. Record keys and table names are automatically converted to uppercase to match Oracle WMS conventions.
Sources: src/flext_target_oracle_wms/_utilities/helpers.py:112-120, tests/unit/test_target.py:125-145, tests/unit/test_wms_patterns.py:80-90
Configuration and Validation
The target requires specific authentication and environment settings to interact with the Oracle WMS Cloud API.
Required Configuration Fields
| Field | Type | Description |
|---|---|---|
base_url | String | The URL for the Oracle WMS Cloud instance. |
username | String | Authentication username. |
password | String | Authentication password. |
environment | String | Target environment (e.g., demo, production). |
load_method | Enum | Method for loading: APPEND_ONLY, UPSERT, or MERGE. |
Sources: src/flext_target_oracle_wms/_utilities/helpers.py:23-41, examples/01_basic_usage.py:30-34
Load Methods
The system supports multiple loading strategies defined in the constants. APPEND_ONLY is the default, while UPSERT and MERGE are available for managing record updates.
Sources: src/flext_target_oracle_wms/_utilities/helpers.py:33-38, tests/unit/test_quality.py:53-57
Data Transformation Logic
Transformation is handled by the WMSDataTransformer, which relies on the WMSTypeConverter to sanitize values.
Type Conversion Rules
- Objects/Arrays: Serialized to JSON strings.
- Numbers/Integers: Converted to their respective numeric types or kept as strings if they exceed safe bounds.
- Keys: All record keys are converted to uppercase (e.g.,
item_idbecomesITEM_ID).
# Example of key transformation in WMSDataTransformer
for key, value in typed_record.record.items():
converted = self.type_converter.convert_singer_to_oracle(resolved_type, value)
transformed[key.upper()] = converted.value
Sources: src/flext_target_oracle_wms/_utilities/helpers.py:46-65, src/flext_target_oracle_wms/_utilities/helpers.py:90-105
Integration Patterns
The project emphasizes production-ready patterns through its relationship with other FLEXT modules:
- flext-core: Provides the
Resultpattern (r.ok()/r.fail()) for error handling. - flext-observability: Integrated via
@flext_monitor_functionfor telemetry and monitoring. - Singer SDK: Implements standard Singer messages for interoperability with other taps.
Summary
flext-target-oracle-wms serves as a robust bridge between Singer-compliant data sources and Oracle WMS Cloud. By enforcing strict validation, automated schema mapping, and consistent data transformation, it ensures data integrity during high-scale enterprise ETL operations. It is designed to be used via its CLI or as a library within a broader data pipeline.
Sources: README.md:9-11, pyproject.toml:95-97