Snapshot Load Processors

Processor inventory for the Snapshot Load flow of the sqlserver-multidatabase connector (v0.26.0), taken from the exported flow definition.

⚙ 5 processors, plus a nested Perform Snapshot Load group (25)

Snapshot Load performs the initial bulk copy of each configured table before incremental change tracking takes over. The top-level group selects and registers tables; the nested Perform Snapshot Load group creates destination objects, reads source rows in parallel, and streams them into Snowflake. Processor types prefixed MultiDatabase* are the multi-database connector variants.

Table Selection & Registration (5)

ProcessorTypePurpose
Set Tables for ReplicationGenerateFlowFileEmits the configured table set to drive the snapshot cycle
Verify Configured TablesMultiDatabaseListTableNamesValidates the Included Table Names resolve at the source
Pick Tables For ReplicationMultiDatabasePickTablesForReplicationSelects which tables to snapshot this cycle
Register New Tables for ReplicationMultiDatabaseUpdateTableStateMarks newly added tables in the state store
Remove Table From ReplicationMultiDatabaseUpdateTableStateRemoves de-configured tables from the state store

Nested: Object Naming & Creation (5)

ProcessorTypePurpose
Determine Destination Object NamesSetAttributesValidatingReferencesResolves destination schema/table names (Destination Schema Pattern)
Apply Object Identifier Resolution StrategyUpdateAttributeApplies case-sensitivity rules to identifiers
Create Snowflake SchemaUpdateSnowflakeSchemaCreates the destination schema if missing
Create Snowflake TableUpdateSnowflakeTableCreates the destination table
Create Snowflake TableUpdateSnowflakeTableSecondary create path for the destination table

💾 Nested: Read & Load (6)

ProcessorTypePurpose
Fetch Source Table SchemaMultiDatabaseFetchSourceTableSchemaReads the source table column definitions
Fetch Table RowsMultiDatabaseFetchTableSnapshotBulk-reads source rows in parallel chunks (Concurrent Select Queries For Snapshot)
Add Snowflake Specific ColumnsUpdateRecordAdds connector metadata columns before upload
Remove Snowflake Specific ColumnsUpdateRecordStrips helper columns not persisted to the destination
Restore Chunks OrderEnforceOrderRe-orders parallel chunks before load
Upload Rows via Snowpipe StreamingPutSnowpipeStreamingStreams snapshot rows into the destination table

Nested: Gating & Control Flow (5)

ProcessorTypePurpose
Check If Primary Key Is PresentRouteOnAttributeRequires a primary key before snapshotting the table
Check if Configured to Skip SnapshotRouteOnAttributeHonors the skip-snapshot setting for the table
Check if Configured to Skip SnapshotRouteOnAttributeSecond skip-snapshot gate on an alternate path
Check if All Rows StoredRouteOnAttributeConfirms every chunk uploaded before completing
Clear ContentReplaceTextClears row content once uploaded

🕑 Nested: State & Logging (4)

ProcessorTypePurpose
Wait for Incremental Load to BeginMultiDatabaseWaitForTableStateHands off to incremental once the snapshot finishes
Mark Snapshot CompleteMultiDatabaseUpdateTableStateRecords snapshot completion in the state store
Mark Table Replication FailedMultiDatabaseUpdateTableStateRecords table-level failure in the state store
Log Snapshot Complete MessageLogMessageEmits a completion log line for the table

Nested: Error Handling (5)

ProcessorTypePurpose
Update Failure Reason With CLEARING_FLOWFILE_FAILEDUpdateAttributeSets error code when clearing FlowFile content fails
Update Failure Reason With MISSING_PRIMARY_KEYSUpdateAttributeSets error code when the table has no primary key
Update Failure Reason With ORDER_ENFORCEMENT_FAILEDUpdateAttributeSets error code when chunk ordering fails
Update Failure Reason With SNOWFLAKE_OBJECT_ALREADY_EXISTSUpdateAttributeSets error code when the destination object already exists
Update Failure Reason With SNOWPIPE_UPLOAD_FAILEDUpdateAttributeSets error code when Snowpipe Streaming fails

Note: The full connector flow definition (59 processors across Snapshot Load, Incremental Load, and Stream Staleness Prevention) is exported to connector-flow/sqlserver-multidatabase.flow.json in the reference implementation repository, taken from the deployed sqlserver-multidatabase connector v0.26.0. It can be imported into any Openflow runtime.

Incremental Load Processors

Processor inventory for the Incremental Load flow of the sqlserver-multidatabase connector (v0.26.0), taken from the exported flow definition.

⚙ 19 processors, plus a nested Create Journal Table group (6)

The Incremental Load flow handles change capture, destination object naming, schema evolution, the journal merge, state coordination, and error recovery. Processor types prefixed MultiDatabase* are the multi-database connector variants.

💾 Change Capture & Upload (4)

ProcessorTypePurpose
Read SQLServer Change Tracking tablesMultiDatabaseCaptureChangeSqlServerPolls CT tables for the net INSERT/UPDATE/DELETE change per interval
Schedule WarehouseMergeContentBins changes and gates the merge schedule (Merge Task Schedule CRON)
Remove Rows from FlowFileReplaceTextClears row content after upload, before signaling the merge
Upload Rows via Snowpipe StreamingPutSnowpipeStreamingStreams changes into the journal table

Merge to Destination (2)

ProcessorTypePurpose
Merge Journal to DestinationMultiDatabaseMergeSnowflakeJournalTableApplies UPSERT/DELETE from journal to destination
Drop Journal StreamUpdateSnowflakeStreamCleans up the journal stream after merge

Destination Object Naming (2)

ProcessorTypePurpose
Determine Destination Object NamesSetAttributesValidatingReferencesResolves destination schema/table names (Destination Schema Pattern)
Apply Object Identifier Resolution StrategyUpdateAttributeApplies case-sensitivity rules to identifiers

Schema Evolution (3)

ProcessorTypePurpose
Process Schema ChangesMultiDatabaseEnrichCdcStreamDetects and processes DDL changes from source
Drop First DDLRouteOnAttributeFilters the initial DDL event to prevent duplicates
Alter Destination TableUpdateSnowflakeTableApplies ALTER TABLE to the Snowflake destination

🕑 State Management (2)

ProcessorTypePurpose
Wait for Snapshot Load to FinishMultiDatabaseWaitForTableStateBlocks incremental until the snapshot completes
Set Source Table FQNUpdateAttributeAdds the fully-qualified source table name to the FlowFile

Error Handling (6)

ProcessorTypePurpose
Update Failure Reason With CONTENT_MERGE_FAILEDUpdateAttributeSets error code when the merge/batching step fails
Update Failure Reason With SNOWFLAKE_OBJECT_OPERATION_FAILEDUpdateAttributeSets error code when a DDL operation fails
Update Failure Reason With SNOWPIPE_UPLOAD_FAILEDUpdateAttributeSets error code when Snowpipe Streaming fails
Update Failure Reason With VALUE_MAPPING_ERRORUpdateAttributeSets error code when a value cannot be mapped
Mark Replication as FailedMultiDatabaseUpdateTableStateRecords table-level failure in the state store
Mark Replication as FailedMultiDatabaseUpdateTableStateAlternate failure path

📂 Nested: Create Journal Table (6)

ProcessorTypePurpose
Create Schema If Not ExistsUpdateSnowflakeSchemaCreates the destination schema if missing
Create Journal TableUpdateSnowflakeTableCreates the journal table in Snowflake
Create Journal Table StreamUpdateSnowflakeStreamCreates the append-only stream on the journal table
Convert To Journal SchemaMultiDatabaseConvertToJournalSchemaDerives the journal table schema from the source table
Mark Replication as FailedMultiDatabaseUpdateTableStateRecords failure if journal creation fails
Update Failure Reason With SNOWFLAKE_OBJECT_OPERATION_FAILEDUpdateAttributeSets error code when a journal DDL operation fails

Stream Staleness Prevention Processors

Processor inventory for the Stream Staleness Prevention flow of the sqlserver-multidatabase connector (v0.26.0), taken from the exported flow definition.

⚙ 4 processors

Each journal table has a Snowflake stream, and a stream becomes stale once its offset falls outside the table's data retention window. If the source goes quiet longer than that window, the stream would expire and force a costly reinitialization. This small housekeeping flow runs on a schedule to read each journal stream's position and advance its STALE_AFTER boundary, keeping the streams alive through periods of low change volume.

🕑 Staleness Prevention (4)

ProcessorTypePurpose
Fetch Journal StreamsExecuteSQLRecordQueries Snowflake for the journal streams to check
Check If Journal Streams Are PresentRouteOnAttributeProceeds only when one or more streams are returned
Get Stream CoordinatesEvaluateJsonPathExtracts each stream's current offset from the query result
Advance Stream's STALE_AFTERExecuteSQLPushes the stream's STALE_AFTER boundary forward so it does not expire