Back to Docs

Architecture

Technical overview of the ReportBridge platform — components, data flow, API surface, and infrastructure.

High-Level Architecture Flow

ReportBridge high-level architecture — User to Domo Dashboard to ReportBridge Viewer to AWS Lambda to Bold Reports Server to PostgreSQL Database

User in Domo Dashboard

Domo Everywhere iframe

ReportBridge Viewer

Requests embed token (HMAC-SHA256 auth)

embed token request

AWS Lambda API (API Gateway)

Returns signed token

signed token

Bold Report Viewer (EC2 / ECS Fargate)

Executes SQL queries (Npgsql connector)

SQL queries

PostgreSQL (RDS / EC2)

Returns result sets; renders paginated report

Flow Summary

  1. A Domo user opens a dashboard containing a ReportBridge card.
  2. Domo Everywhere renders the card as an iframe hosting the ReportBridge Viewer (a React ProCode app).
  3. The Viewer requests an embed token from the AWS Lambda API, authenticated via HMAC-SHA256.
  4. The Viewer embeds the Bold Report Viewer in a nested iframe, passing the signed token.
  5. Bold Report Viewer reads the RDL file natively, executes PostgreSQL queries through its Npgsql connector, and renders the paginated report server-side.
  6. The rendered report is displayed inside the Domo card with full paginated fidelity.

Migration Pipeline

ReportBridge migration pipeline — SSRS RDL files through AI conversion, SQL validation with auto-fix loop, publish to Bold Report Viewer, catalog sync, available in viewer

Original SSRS RDL Files

T-SQL queries

ReportBridge Admin App (React ProCode)

Upload, BOM stripped, datasources replaced

AI Conversion (Claude via Anthropic API or AWS Bedrock)

Send T-SQL + schema context

SQL Validation (EXPLAIN against PostgreSQL)

PASS or FAIL

FAIL

Auto-Fix Loop (up to 5 rounds)

Re-sent to AI with error context

back to AI
PASS

Publish to Bold Report Viewer

catalog synced to Domo DataSet

Bold Report Viewer (EC2 / ECS Fargate)

Available in ReportBridge Viewer

Pipeline Summary

  1. Upload original SSRS RDL files through the ReportBridge Admin App. BOM characters are stripped and datasource references are replaced automatically.
  2. The AI Conversion Engine (Claude) receives each T-SQL query along with the target PostgreSQL schema context.
  3. Converted SQL is validated via EXPLAIN against the live PostgreSQL instance.
  4. If validation fails, the query re-enters the AI conversion loop with error context for up to 5 rounds of automatic correction.
  5. Once all queries pass, the converted RDL is published to Bold Report Viewer and the Domo catalog DataSet is updated.
  6. The report becomes immediately available to end users in the ReportBridge Viewer.

Components

ComponentTechnologyPurposeRuns On
ReportBridge ViewerReportBridge ViewerReact (Domo ProCode)End-user report viewer with sidebar navigation, category grouping, search, and embed token authenticationDomo (iframe)
ReportBridge AdminReportBridge AdminReact (Domo ProCode)Admin UI for report catalog, AI conversion, batch publish, database configuration, access control, and audit logDomo (iframe)
Lambda APINode.js + pg (AWS Lambda)Central API bridge; handles embed tokens, dataset writes, SQL testing, schema discovery, AI proxy, and report publishingAWS Lambda (VPC), API Gateway
Bold Report ViewerSyncfusion Bold Reports (.NET), Docker Compose, nginxNative RDL / RDLC rendering engineAWS EC2 (Docker) or ECS Fargate
PostgreSQL (report data)PostgreSQL 14+Stores migrated SQL Server data across multiple databases per jurisdictionAWS EC2 or RDS
PostgreSQL (Bold Reports metadata)PostgreSQLInternal metadata store for Bold ReportsDocker container on Bold Reports EC2
Config DataSetDomo DataSetInstance settings: Bold Report Viewer host, credentials, authentication modeDomo
Catalog DataSetDomo DataSetReport inventory with status, group assignments, conversion metadata (24 columns)Domo
Databases DataSetDomo DataSetPostgreSQL connection configurations per data source (12 columns)Domo
Audit DataSetDomo DataSetTimestamped log of every conversion, test, publish, and configuration changeDomo
AI Conversion EngineClaude (Anthropic API / AWS Bedrock)Converts T-SQL to PostgreSQL with schema-aware contextAnthropic Cloud / AWS Bedrock
ALB + ACM CertificateAWS Application Load BalancerHTTPS termination and TLS for Bold Report ViewerAWS
nginx Reverse Proxynginx (Docker)CORS headers and request routingDocker container on Bold Reports EC2

Lambda API Actions

Report Rendering

rendering
ActionDescription
get-embed-tokenGenerates HMAC-SHA256 signed embed token for Bold Report Viewer iframe authentication. Accepts jurisdiction context.

Report Publishing and Validation

publishing
ActionDescription
publish-reportUploads converted RDL (base64) to Bold Report Viewer via API. Temp-name-then-rename strategy.
validate-reportDownloads RDL, extracts SQL, executes against PostgreSQL for end-to-end verification.
bold-proxyGeneric proxy for Bold Reports API calls. Category listing, report metadata, admin operations.
reconcile-catalogCompares Domo catalog against Bold Report Viewer. Identifies mismatches and orphans.

SQL Testing and Schema Discovery

sql
ActionDescription
test-sqlValidates SQL via EXPLAIN (plan only, no execution).
run-sqlExecutes SQL with LIMIT 1 for runtime error detection. Read-only transaction enforced.
test-pgTCP connectivity test to PostgreSQL host/port.
fetch-schemasRetrieves all table/column schemas from PostgreSQL for AI context.

Domo Integration

domo
ActionDescription
write-datasetWrites rows to Domo DataSet via OAuth. Full replace and append modes.
list-groupsLists all Domo groups for Access Control assignment.
create-datasetsAuto-creates 4 required DataSets with correct schemas. Used by Setup Wizard.

AI Conversion

ai
ActionDescription
anthropic-proxyProxies to Anthropic API with retry on 503 (exponential backoff, up to 5 attempts).

Security Model

Defense in Depth

  • SQL injection prevention

    test-sql and run-sql accept only SELECT / WITH; DDL/DML blocked; read-only transactions.

  • Error sanitization

    Internal IPs, passwords, file paths stripped from error responses.

  • Parameterized queries

    All internal PostgreSQL operations use parameterized queries.

  • No credentials in the client

    The Viewer app holds no passwords, API keys, or database credentials.