DSEDataSourceExplorer
DSE 1.0.1

Generate deployables and Universal Destination Writers

Generate deployables turns the current catalog and/or saved Output Target definitions into a portable runner. The runner can keep CSV/Excel audit outputs and can also route one or more logical target definitions into one physical destination.

DSE now uses a Universal Destination Writer Framework. Every Output Target preset in the current catalog has an executable writer path. The implementation is technology-aware: native managed providers are used where practical, ODBC is used for vendor databases/warehouses that expose a standard write driver, documented HTTP/OData APIs are used for API-first systems, cloud SDKs are used for object stores, file writers are used for filesystem targets, and mainframe/custom targets use an explicit gateway or ODBC bridge.

Important: “Runtime writer” means the generated runner knows how to execute the route. It does not mean that every external prerequisite is bundled. ODBC destinations still need the appropriate vendor ODBC driver. SaaS/API destinations need a valid endpoint and authorization. VSAM/IMS/CICS require an approved site gateway or an ODBC path supported by the customer environment.

1. Recommended workflow

  1. Discover/configure sources and build the Schema/Data Catalog.
  2. Create/review reusable mappings in Compose targets.
  3. Open Generate deployables.
  4. Add one or more saved Output Target definitions.
  5. Configure the proposed physical destination before activating it.
  6. Review the writer technology shown beside the destination preset.
  7. Edit destination object names and object types.
  8. Choose Append or Replace when the selected writer supports both.
  9. Enable Route selected targets to one destination only when you want the generated runner to perform the physical write.
  10. Configure and test the destination connection.
  11. Select target platforms/RIDs and optional CSV/Excel audit outputs.
  12. Generate, run, review results, and reconcile destination counts.

2. Logical targets versus the physical destination

A saved Output Target is a logical data contract. It describes which source fields map to which logical destination fields. It does not have to be the technology that receives the data at runtime.

Example:

MongoDB + Couchbase + InfluxDB -> PostgreSQL

DSE can create a route such as:

Or:

Oracle + MongoDB + DynamoDB -> Redis

with one Redis Hash destination per selected logical target.

The route manifest keeps source-target provenance, source object identity, destination object identity, destination field names, types, nullable/key metadata, and write mode so the generated runner does not blindly merge unrelated records.

3. Configure first, activate second

The destination editor remains usable while Route selected targets to one destination is unchecked.

You can therefore:

without activating an external write.

Checking Route selected targets to one destination activates the physical route for generation. This separation is deliberate: route design is safe and reversible; execution is explicit.

4. Destination writer technologies

The capability badge includes the writer technology.

Writer technology Used for Runtime prerequisite
Native SQL Server/Azure SQL/Synapse, PostgreSQL, MySQL/MariaDB, Oracle, SQLite, MongoDB, DynamoDB, Cassandra, Redis, Neo4j Provider is packaged with the runner; destination/network/credentials must be available.
ODBC Db2, Informix, Sybase ASE, Teradata, Netezza, SAP HANA, Firebird, H2, OpenEdge, IRIS/Cache, Snowflake, Redshift, BigQuery, Spanner, Databricks, Hive, Trino, SAS Viya, Access, dBase, IBM i, Db2 z/OS Install the vendor ODBC driver on the deployable host and provide Driver=... or DSN=....
REST/OData CosmosDB, Couchbase, CouchDB, Elasticsearch, OpenSearch, ArangoDB, InfluxDB, Salesforce, Dynamics 365, SharePoint, ServiceNow, Workday, SAP OData Reachable API endpoint and appropriate token/basic/API-key credentials.
Object store S3, Azure Blob, ADLS Gen2, Google Cloud Storage Cloud/service credentials and network access.
File File System, SMB, NFS, Excel Writable path/share and OS permissions.
Gateway VSAM, IMS, CICS, Generic Approved HTTP write gateway or an ODBC write path exposed by the environment.

Why DSE does not pretend every writer is identical

Different destination technologies have different physical semantics. A SQL table supports columns and transactions; Redis stores key/value structures; InfluxDB uses measurements; S3 writes objects; Salesforce exposes record APIs; CICS usually requires a site-controlled transaction/gateway. DSE uses one canonical routing model but delegates the physical operation to the appropriate adapter.

5. Destination object routing table

Each row represents one selected logical target.

Input target

Shows the saved target and mapped-field count.

Destination object

This is directly editable. The generated value is only a safe default. Click the field and enter the physical object name you want.

Names must be:

Object type

The object-type choices are constrained by the destination writer. Examples:

6. Canonical record model

Source connectors do not write directly into destination-specific code. The generated runner first converts selected rows/documents into a neutral DSE record envelope containing:

The destination adapter then converts that canonical record to the physical destination representation. This is what allows a relational source, a document source and a time-series source to participate in the same destination route without creating provider-to-provider combinations for every possible pair.

7. Append and Replace

Append

Preserves existing destination data and adds the current routed records.

Replace

For destinations where DSE can define a safe whole-object replacement policy, DSE clears the route-owned object/prefix once per run and then writes the current data.

Examples:

API-first SaaS safety

For Salesforce, Dynamics 365 CRM, SharePoint, ServiceNow, Workday and SAP OData, destructive full-object Replace is intentionally not exposed by the direct API writer. These systems often require business-specific delete/archive rules. Use Append, or route through an approved custom gateway that implements a reviewed replacement policy.

8. Destination connection strings

The destination connection can be embedded for a controlled lab/demo, but production deployments should normally inject it at runtime:

DSX_DESTINATION_CONNECTION_STRING

Native examples

ODBC

Use an explicit vendor connection string, for example:

Driver={Vendor ODBC Driver};Server=...;Database=...;Uid=...;Pwd=...;

or:

DSN=ProductionWarehouse;Uid=...;Pwd=...;

DSE intentionally does not guess vendor driver names because that would make a generated package machine-specific and unreliable.

REST/OData

Common keys understood by the universal API writer include:

Gateway

For VSAM/IMS/CICS/custom systems, use either:

The gateway receives a canonical DSE envelope containing destination target/type/object, write mode, source target and mapped records.

9. Provisioning behavior

Writers attempt only the provisioning that is safe and practical for their technology.

Examples:

Provisioning failures are surfaced as runtime errors; DSE does not silently continue when the route destination cannot be created or accessed.

10. Test connection

Use Test connection before generation whenever possible.

DSE chooses the test method based on the writer technology:

A successful connectivity test confirms reachability/authentication at that moment; it does not guarantee that the account has every create/delete/write permission required by the selected route.

11. CSV and Excel audit outputs

CSV/Excel remain independent outputs. They can be generated:

For migration work, retaining a small audit output is useful for comparing source samples with the physical destination.

12. Platform/RID selection

Typical runtime identifiers:

Remember that ODBC writers depend on the ODBC driver installed on the machine where the generated runner is executed. A driver available on the DSE design workstation is not automatically available inside another server/container.

13. AI Advisor integration

In Destinations, select exactly one AI recommendation using the radio button. The selection is staged automatically for the next Generate Deployables session; Use selected destination in Deployables can be used to confirm it explicitly. Create draft targets now creates or refreshes only the selected destination target, avoiding repeated AI-draft accumulation.

AI Advisor and Generate Deployables share the same Output Target and route model.

The Advisor can:

The AI does not silently execute a write. The user still reviews:

before running it.

Because every current output preset now has a writer path, AI recommendations no longer need to be converted to an unrelated destination merely because the original technology was “Plan only.” The recommendation can remain the physical target, subject to its runtime prerequisites (ODBC driver, API token, gateway, etc.).

14. Generated runner artifacts

When destination routing is enabled, the generated schema/summary records:

This makes generated packages easier to review and audit without exposing secrets.

15. Readiness and validation

Generation is blocked when required configuration is incomplete. Common causes include:

Runtime validation can still fail later if an external prerequisite is unavailable, for example a missing ODBC driver, invalid token, inaccessible gateway or insufficient write permission.

16. Running and reviewing

After generation:

  1. Open the generation summary.
  2. Use Run now for a local execution when appropriate.
  3. Use View results after output exists.
  4. Review run-summary.json, CSV/XLSX audit output and route metadata.
  5. Verify physical destination record counts independently.
  6. For important migrations, reconcile counts/keys and retain logs before cutover.

17. Troubleshooting

Destination preset cannot be changed

The destination editor is intentionally editable while routing is off. If it is locked, install a build containing the destination-dropdown fix. The route checkbox activates execution; it should not lock configuration.

Destination object text/caret is hard to see

Use a build containing the route-editor row-height/caret fix. Destination rows use dedicated editors with increased height and direct two-way binding.

ODBC writer reports missing Driver/DSN

Install the correct vendor ODBC driver and provide an explicit ODBC connection string in the override or DSX_DESTINATION_CONNECTION_STRING.

REST/OData writer receives 401/403

Verify endpoint, token/user credentials, tenant/site context and write scopes/roles. A token that can read metadata may not have create/update permissions.

SaaS destination does not offer Replace

This is intentional. Full destructive replacement requires application-specific business rules. Use Append or an approved gateway.

VSAM/IMS/CICS asks for a gateway

These technologies normally require installation-specific transactional/host access. Configure the approved HTTP gateway or an available ODBC write path; DSE will send the canonical mapped record envelope to that bridge.

Generated runner says destination connection is required

Set DSX_DESTINATION_CONNECTION_STRING, or explicitly enable connection-string embedding for a controlled environment.

Replace left old append segments in object storage

Use the latest Universal Writer build. Replace is route-prefix scoped and removes previous route-owned segments before writing the replacement payload. Never point a route prefix at unrelated shared data.

18. Production recommendations

19. Enterprise reliability, lineage and restart safety

Generated deployables can now include an enterprise reliability layer in addition to CSV/Excel and physical destination routing.

When enabled, every run receives a unique Run ID and produces structured governance artifacts under output/audit/<run-id>/:

The lineage artifacts intentionally exclude connection strings and credentials.

Run lease and heartbeat

When Enable run lease and heartbeat is selected, the runner creates a schema-scoped lease plus heartbeat in the state directory. A second runner using the same state directory and schema cannot start until the active lease is released or becomes stale. For active/passive scheduler designs, configure the same durable DSX_STATE_DIR on both nodes.

Useful overrides:

Retries

Transient source-read failures are retried with bounded exponential backoff. Destination writes are retried only when the writer advertises transaction or upsert semantics that make replay reasonably safe. This avoids blindly replaying non-idempotent Append calls.

Resume checkpoints

Resume completed destination selections stores successful destination-selection checkpoints. If a run fails and is restarted with resume enabled, the runner can avoid repeating destination writes already completed while still rebuilding CSV/Excel audit outputs.

Resume is intentionally disabled for Replace routes because a new process could clear a destination object before replaying a partial replacement.

Important CDC distinction

These checkpoints improve restart/replay safety, but they are not log-based Change Data Capture (CDC). The current source read mode remains Snapshot. Production CDC requires source-specific readers for transaction logs/change feeds and durable provider cursors (for example SQL Server CDC LSNs, PostgreSQL WAL/logical replication, MongoDB resume tokens, Cosmos Change Feed continuations and DynamoDB stream shard positions).

See Docs/Enterprise-Reliability-CDC-Governance-HA-Plan.md for the production CDC and distributed-orchestration roadmap.

<!-- DSE_DEPLOYABLE_CERTIFICATION_HELP_V1 -->

20. Certified execution of generated Windows and Linux deployables

Use this section after Generate deployables completes. It documents the certification/run workflow for the generated win-x64 and native linux-x64 packages. These are generated integration runners, not the DSE commercial Windows/Container installer SKUs.

20.1 Windows deployable (windows/win-x64)

Copy the generated Windows folder to the certification machine (or extract the transferred archive), then work from the windows\win-x64 directory.

Verify these generated files are present before the first run:

Start the professional local Runtime Manager:

cd /d C:\Path\To\deployables\windows\win-x64
manager.cmd

manager.cmd launches DataSourceExplorer.Runner.exe --manager. The manager binds to 127.0.0.1 and normally opens the default browser automatically. If the browser does not open, run the executable directly and use the Local management URL printed in the console.

DataSourceExplorer.Runner.exe --manager
  1. Confirm Runtime status is READY and there is no active execution.
  2. In Connections, confirm each required source and destination is Configured. Leave protected fields blank when you want to keep the saved/embedded value.
  3. For the first certification run, use Manual only scheduling and set the output directory to output.
  4. Select Run now and wait for the status to return to READY.
  5. Confirm Last result and Run history show Success, then independently verify the expected output/destination data.

For a one-time headless execution:

run.cmd

The generator first attempts a self-contained publish. If it had to fall back to a framework-dependent publish, install the matching .NET 8 and ASP.NET Core 8 runtime on the target machine.

20.2 Linux deployable (linux/linux-x64) — validated Ubuntu Hyper-V workflow

The following procedure follows the validated Ubuntu Server 26.04.1 LTS / Microsoft Hyper-V guide supplied for certification. It runs the native Linux deployable; Docker is not required for this workflow.

Preferred secure browser access from Windows

Instead of exposing the manager on the VM network, you can create an SSH local port forward from Windows PowerShell after reading the manager port from the Linux log:

ssh -L 18093:127.0.0.1:<manager-port> <linux-user>@<VM-IP>

Then open http://127.0.0.1:18093/ on Windows. Keep the SSH session open while using the manager. The socat relay described below remains useful on an isolated/trusted certification network.

Purpose

This procedure creates a lightweight Ubuntu Server virtual machine and runs the native Linux deployable produced by DSE. It mirrors the Windows deployable workflow: copy the generated package, start the DSE Deployable Runtime Manager, open the manager from the Windows host, run the deployable, and verify the result.

The package described here is a native linux-x64 deployable. Docker is not required for this workflow.

Prerequisites

Windows → Hyper-V → Ubuntu → DSE Runtime Manager → Browser

1. Create the Hyper-V virtual machine

Create a Generation 2 VM with the following baseline settings:

VM name DSE-Linux-Test
Generation Generation 2
Memory 4096 MB fixed RAM recommended
Processors 4 virtual processors
Disk 40 GB dynamically expanding VHDX
Network Hyper-V Default Switch
Secure Boot Enabled - Microsoft UEFI Certificate Authority
OS Ubuntu Server LTS (26.04.1 used for this validation)

During Ubuntu installation, select Install OpenSSH server. After installation, remove/eject the ISO and boot from the virtual hard disk.

2. Prepare Ubuntu

Log in to Ubuntu and update the operating system. Then verify CPU, memory, disk, and IP address.

sudo apt update
sudo apt upgrade -y
hostname -I
nproc
free -h
df -h

If the 40 GB VHDX was created but the root logical volume is only about 18-19 GB, expand the LVM root volume to consume the free space.

sudo vgs
sudo lvextend -l +100%FREE -r /dev/ubuntu-vg/ubuntu-lv
df -h

3. Connect from Windows with SSH

Use the current VM IP reported by hostname -I. Hyper-V Default Switch addresses can change after a reboot.

ssh <linux-user>@<VM-IP>

4. Copy the generated Linux folder

Run ssh/scp from Windows PowerShell, not from the Ubuntu shell. DSE generates a linux folder, not a linux.zip file. Replace the example path, user, and IP with the actual values.

ssh <linux-user>@<VM-IP> "rm -rf /home/<linux-user>/dse-deploy/linux && mkdir -p /home/<linux-user>/dse-deploy"
scp -r "C:\Path\To\GeneratedDeployables\...\linux" <linux-user>@<VM-IP>:/home/<linux-user>/dse-deploy/

If Linux reports "Could not resolve hostname c:", the scp command was run from Ubuntu. Exit to Windows PowerShell and run it there.

5. Prepare the deployable

Install socat if you will use the relay method, enter the copied linux-x64 directory, and apply Linux execute permissions. Current DSE-generated shell scripts are UTF-8 without a BOM, so no extraction or BOM-removal step is required.

sudo apt update && sudo apt install -y socat
cd ~/dse-deploy/linux/linux-x64
chmod +x DataSourceExplorer.Runner manager.sh run.sh
ls -l DataSourceExplorer.Runner manager.sh run.sh

6. Verify source/destination connectivity

Before starting DSE, test that the Ubuntu VM can reach the required data source or destination port. The example below uses MongoDB on port 27017.

timeout 5 bash -c '</dev/tcp/<source-host>/<source-port>' \
  && echo 'Port reachable' \
  || echo 'Port NOT reachable'

# MongoDB example
timeout 5 bash -c '</dev/tcp/192.168.50.124/27017' \
  && echo 'MongoDB port reachable' \
  || echo 'MongoDB port NOT reachable'

7. Start the DSE Deployable Runtime Manager

Start the manager and read its console log. The manager binds to 127.0.0.1 and selects a local port.

cd ~/dse-deploy/linux/linux-x64
./manager.sh
sleep 2
cat .dse-manager/manager-console.log
curl http://127.0.0.1:<manager-port>/ | head

A successful log contains a line similar to: Local management URL: http://127.0.0.1:51827. The port can change after restart.

8. Make the manager available to the Windows browser

Use socat on Ubuntu to relay a stable VM port (18093) to the manager's current loopback port. The commands below detect both the VM IP and the manager port automatically.

cd ~/dse-deploy/linux/linux-x64
VM_IP=$(hostname -I | awk '{print $1}')
MANAGER_PORT=$(grep -oE '127\.0\.0\.1:[0-9]+' .dse-manager/manager-console.log | tail -1 | cut -d: -f2)
nohup socat TCP-LISTEN:18093,bind="$VM_IP",reuseaddr,fork TCP:127.0.0.1:"$MANAGER_PORT" > ~/dse-relay.log 2>&1 &
echo "Open: http://$VM_IP:18093/"
ss -ltnp | grep 18093

Use this relay only on a trusted test network. It makes the manager reachable on the VM network interface while socat is running.

9. Run the deployable from the UI

  1. Open the URL printed by the relay command in Edge or Chrome.
  2. Confirm Runtime status shows READY and no active execution.
  3. In Connections, confirm the source and destination show Configured. Leave protected connection fields blank when you want to keep the embedded values.
  4. Set Scheduler configuration to Manual only for the first test. Set Output directory to output and save the runtime settings.
  5. Select Run now. Wait for the status to return to READY.
  6. Confirm Last result and Run history show Success, then verify the expected output files and destination data.

10. Stop, restart, and clean up

The VM IP and manager port can change after a VM restart. Start manager.sh again, read the new port, and restart the socat relay. To stop the relay:

pkill -f 'socat TCP-LISTEN:18093' || true

Verification checklist

Troubleshooting

Issue / Symptom Action
scp says Could not resolve hostname c: Run scp from Windows PowerShell, not from Ubuntu.
Permission denied or script will not start Run chmod +x DataSourceExplorer.Runner manager.sh run.sh.
curl -I returns 405 Method Not Allowed This is expected when the manager accepts GET but not HEAD. Test with curl http://127.0.0.1:<port>/ instead.
Browser cannot open 127.0.0.1 manager URL Use the socat relay and open http://<VM-IP>:18093/ from Windows.
Page stops working after reboot Run manager.sh again and recreate the relay because the manager port and VM IP may change.
Source test fails Verify routing/firewall and test the target host/port from Ubuntu before running DSE.

For product help integration, use the localized HTML page from this package. Keep commands unchanged; localize the explanatory text and UI guidance only.