Skip to main content
Universal Object Mapping (UOM) is an advanced research and engineering platform designed to automate the translation, validation, and performance optimization of database schemas and query code across diverse Object-Relational Mapping (ORM), Object-Document Mapping (ODM), and Object-Graph Mapping (OGM) paradigms. Developed within the Adaptive Data Management (ADaM) Research Group at the Department of Software Engineering, Charles University (Faculty of Mathematics and Physics), the project addresses the complex challenges of multi-model database migrations. UOM transitions relational .NET ORM structures (.NET Entity Framework Core, Dapper, NHibernate) into document and graph-based Java Spring Data ecosystems (Spring Data MongoDB, Spring Data Neo4j) with structural compile-and-execute guarantees. UOM Translation Workspace

1. Project Background & Pedigree (ORMorpher)

UOM builds directly upon ORMorpher (originally developed by Milan Abrahám as part of his Master’s thesis, and later published in the IEEE/ACM International Conference on Automated Software Engineering - ASE 2025).
  • Legacy Rule Engine: ORMorpher established C# compiler-based heuristics using the Roslyn Scripting API to map SQL/LINQ queries to an Abstract Representation. It then used Integer Linear Programming (ILP) to dynamically benchmark and select optimal .NET frameworks based on runtime constraints.
  • The LLM Advisor Extension: The UOM project extends this foundation by introducing an autonomous LLM Advisor to handle cross-paradigm schema and query transitions (Relational C# to Document/Graph Java). Rather than relying on rigid, hardcoded rules that struggle with heterogeneous schema mapping (like embedding tables vs. document nesting), UOM deploys an iterative, stateful LangGraph translation machine.

2. Platform Architecture & Data Flow

The complete UOM system coordinates containerized database engines, schema adapters, a Next.js user interface, and isolated Daytona compilation sandboxes:

2.1 Component Matrix

  • Frontend User Interface (frontend/uom-translator-ui): A modern Next.js App Router client utilizing assistant-ui library components. Styled with TailwindCSS and Shadcn/UI, it streams compilation diagnostic logs and DeepDiff result comparisons back to the user in real time.
  • LLM Orchestrator (services/orchestrator): A Python-based service running a stateful LangGraph execution graph. Details of its state definitions, compiler nodes, and thread parameters are documented in the Orchestrator README.
  • Validation Sandboxes: Ephemeral environment containers (.NET 10 SDK and Java OpenJDK 25) managed via Daytona to compile and execute generated code without risk to the host filesystem.
  • Relational Source Database: A Microsoft SQL Server instance (mssql_db) pre-loaded with the WideWorldImporters sample dataset.

3. Semi-Automatic ETL & Data Migration Pipelines

To validate query translations against real-world datasets, the target document (MongoDB) and graph (Neo4j) database engines must contain matching, logically equivalent data models. UOM defines a one-time, semi-automatic ETL process to map and migrate relational schemas:
  1. Relational-to-Document Migration (MongoDB):
    • Configured using MongoDB Relational Migrator (web dashboard at https://migrator.uom.dyn.cloud.e-infra.cz/).
    • Users define how SQL columnar tables and primary/foreign key relationships map into MongoDB document collections, specifying document embedding patterns (e.g. embedding order items within parent orders) vs. referencing models.
    • The migrator connects via JDBC and executes the ETL pipelines, populating the uom database in MongoDB.
  2. Relational-to-Graph Migration (Neo4j):
    • Configured using the Neo4j ETL Tool and APOC plugins OR via the Neo4j ETL CLI for more control and to bypass UI issues. (NOTE: Neo4j ETL Tool UI is only available in Neo4j Desktop v1.6 and older)
    • Maps relational tables to graph nodes, and foreign-key joins to node relationship labels (e.g. (:Order)-[:CONTAINS]->(:Product)).
    • Populates the graph database, providing equivalent dataset structures prior to Cypher validation.
JDBC connection configurations are mapped inside the services/etl directory.

4. Setting It Up

Development requirements, a step-by-step local quick start (env files, container stack, ETL, Daytona key, LangGraph server, and Next.js frontend), and production deployment are all consolidated in one place:

Getting Started

Requirements + the full local quick start, top to bottom.

DevOps & Deployment

Production Compose profiles, env configuration, and operations.

5. Subsystem Documentation Index

Review the following modular documentation files for detailed, verbose analyses of UOM’s backend orchestrator, Next.js frontend, and DevOps pipelines:

5.1 UOM Orchestrator Backend Subsystem

System Architecture & LangGraph Nodes

Details graph logic, node transitions, and ReAct agent deprecations.

State Representation & Message Isolation

Explains the translation_messages isolation layer and Context reflection.

Daytona Sandbox Managers

Details baseline snapshot builds, exponential backoffs, and log streams.

Semantic Equivalence Algorithms

Reviews Base64 encoding, Maven executions, DeepDiff, and swapped sorting orders check logic.

DeepAgent & ACP Interfaces

Analyzes ACP session modes, local context inspection bash scripts, and CompositeBackend routing.

MCP Adapters & Toolbox Tools

Details SSE connections, MongoDB HTTP clients, and database safety fallback parameters.

5.2 UOM Advisor Frontend Dashboard

Frontend System Overview

Introduces the translation workspace features, suggestion engines, and workspace layout.

Frontend Architecture & Proxy Routing

Explains the API passthrough proxy, client-side SDK clients, state propagation context, and style utilities.

Frontend Runtime & Integration

Details configuration injection, sub-graph events, thread list synchronization adapters, and checkpoint tracking.

Frontend UI Component Specifications

Exhaustive details on Settings onboarding, Daytona remote IDE links, auto-scroll JSON visualizers, and streamdown markdown parsers.

Frontend Setup & Contribution Guidelines

Details dev requirements, production multi-stage Docker builds, and Biome coding standards.

User & Operator Guide

Explains how to start translation sessions, configure targets, diagnose build errors, and handle suspended human-in-the-loop checkpoints.

5.3 DevOps & Deployment Operations

DevOps Setup, Deployment & Operations

Exhaustive details on Docker Compose profiles, environment setups, sandbox timeouts, init/destroy scripts, and database initialization pipelines.

Acknowledgements

Part of the benchmarks source code, including some workflows and diagrams, were developed by Milan Abrahám as part of his Master thesis titled Framework-Agnostic Query Adaptation: Ensuring SQL Compatibility Across .NET Database Frameworks. The thesis is available at http://hdl.handle.net/20.500.11956/203083, and the source code is available at https://github.com/milan252525/orm-convertor.