Oracle-to-PostgreSQL Migration Expert Plugin
Expert agent for Oracle-to-PostgreSQL application migrations in .NET solutions. Performs code edits, runs commands, and guides users through a structured, gated migration workflow.
Installation
# Using Copilot CLI
copilot plugin install oracle-to-postgres-migration-expert@awesome-copilot
What's Included
Agents
| Agent | Description |
|---|---|
Oracle-to-PostgreSQL Migration Expert |
Expert agent for Oracle→PostgreSQL migrations. Makes code edits and runs commands directly, educates users on migration concepts and pitfalls. |
Skills
| Skill | Description |
|---|---|
reviewing-oracle-to-postgres-migration |
Identifies Oracle-to-PostgreSQL migration risks by cross-referencing code against known behavioral differences (empty strings, refcursors, type coercion, sorting/collations, UNION ALL planning risks, materialized-view refresh behavior, timestamps, concurrent transactions, etc.). |
creating-oracle-to-postgres-master-migration-plan |
Discovers all projects in a .NET solution, classifies each for Oracle-to-PostgreSQL migration eligibility, and produces a persistent master migration plan. |
migrating-oracle-to-postgres-stored-procedures |
Migrates Oracle PL/SQL stored procedures to PostgreSQL PL/pgSQL. Translates Oracle-specific syntax, preserves method signatures and type-anchored parameters, and applies explicit collation rules ("C" only when appropriate, locale-specific collations when required). |
planning-oracle-to-postgres-migration-integration-testing |
Creates an integration testing plan for .NET data access artifacts, identifying repositories, DAOs, and service layers that need validation coverage. |
scaffolding-oracle-to-postgres-migration-test-project |
Scaffolds an xUnit integration test project with a transaction-rollback base class and seed data manager for Oracle-to-PostgreSQL migration validation. |
creating-oracle-to-postgres-migration-integration-tests |
Generates DB-agnostic xUnit integration tests with deterministic seed data that validate behavior consistency across both database systems. |
creating-oracle-to-postgres-migration-bug-report |
Creates structured bug reports for defects discovered during Oracle-to-PostgreSQL migration validation, with severity, root cause, and remediation steps. |
migrating-oracle-to-postgres-data-access-code |
Migrates .NET/C# data access code from Oracle to PostgreSQL (Npgsql). Replaces Oracle NuGet packages, rewrites ADO.NET type references, fixes DbType mappings, updates stored procedure invocation patterns, and adapts connection string configuration. |
Features
Educational Guidance
The expert agent educates users throughout the migration journey:
- Migration Concepts: Explains Oracle→PostgreSQL differences (empty strings vs NULL, NO_DATA_FOUND exceptions, sort/collation behavior, TO_CHAR conversions, type coercion strictness, REF CURSOR handling, UNION ALL planning caveats, materialized-view refresh needs, concurrent transactions, timestamp/timezone behavior)
- Pitfall Reference: Surfaces insights from migration knowledge so users understand why changes are needed
- Best Practices: Advises on minimizing changes, preserving logic, and ensuring schema immutability
- Workflow Guidance: Presents a six-phase, gated migration workflow with explicit success criteria at each gate
Suggest-Then-Act Pattern
The expert suggests actionable next steps and only proceeds with user confirmation:
- Educate on the migration topic and why it matters
- Suggest a recommended action with expected outcomes
- Confirm the user wants to proceed
- Act — make edits and run commands directly
- Summarize what was produced and suggest the next step
No autonomous chaining — the user controls the pace and sequence.
For database-changing actions, the expert provides scripts and explicit run instructions; the user applies DB changes.
Migration Workflow
The expert guides users through a six-phase, gated workflow. Each phase must satisfy its success criteria before advancing.
Phase 1 — Discovery & Planning (solution-wide)
- Discover all projects and classify migration eligibility
- Produce
Reports/MasterMigrationPlan.mdrecording DDL artifact location and whether an external tool (e.g.,ora2pg) was already used
Phase 2 — Pre-Migration Planning & Risk Analysis (per project)
- Identify the data-access layer (repositories, DAOs, service classes, SQL/procedure calls)
- Produce
Reports/{ProjectName}/OracleRiskAnalysis.md— a stable analytical reference of Oracle/PostgreSQL behavioral differences found in the code - Derive
Reports/{ProjectName}/MigrationChecklist.md— a numbered, actionable checklist for Phase 5
Phase 3 — Oracle Test Project Creation & Validation (per project)
- Scaffold an Oracle-targeting xUnit test project and write integration tests
- Establish a passing Oracle baseline — a failing baseline means defects exist before migration starts
- Document any behavioral discrepancies as structured bug reports
Phase 4 — Schema & DDL Migration (per project)
- Skip if
MasterMigrationPlan.mdrecords an external tool already produced PostgreSQL DDL - Migrate in dependency order: types/enums → tables/sequences → indexes/constraints → views → triggers → stored procedures (PL/SQL → PL/pgSQL)
- Output artifacts to
DDL/Postgres/{ProjectName}/; user applies scripts and confirms clean apply
Phase 5 — Code Migration (per project)
- Copy the application project into a
.Postgressibling, add to the solution, and update namespace/assembly name - Use the
migrating-oracle-to-postgres-data-access-codeskill to work throughMigrationChecklist.mditem by item - Run
dotnet buildafter each item; fix errors before moving on - Cross-reference completed checklist against
OracleRiskAnalysis.mdto confirm every risk is addressed or deferred with justification
Phase 6 — PostgreSQL Test Project Creation & Validation (per project)
- Clone the Oracle test project into a
.Postgres-namespaced test project targeting the Phase 5 application clone - Migrate the test project,
dotnet build-gating each change - Iteratively fix failures reported by the user — stored procedure corrections are written back to
DDL/Postgres/{ProjectName}/ - Oracle test project must remain unmodified throughout
Prerequisites
- Visual Studio Code with GitHub Copilot
- .NET solution with Oracle dependencies to migrate
- Access to an Oracle instance (for baseline testing) and a PostgreSQL instance (for validation)
Directory Structure
The agent expects and creates the following structure in your repository:
.github/
└── oracle-to-postgres-migration/
├── Reports/
│ ├── MasterMigrationPlan.md
│ └── {ProjectName}/
│ ├── OracleRiskAnalysis.md
│ ├── MigrationChecklist.md
│ ├── PostgresTestMigrationPlan.md
│ └── BUG_REPORT_*.md
└── DDL/
├── Oracle/ # Oracle DDL scripts (pre-migration)
└── Postgres/
└── {ProjectName}/ # PostgreSQL DDL scripts per project (post-migration)
Usage
- Ask for Guidance: Invoke the expert with a migration question or situation (e.g., "How should I approach migrating my .NET solution to PostgreSQL?" or "What does Oracle do with empty strings that's different from PostgreSQL?")
- Learn & Plan: The expert explains concepts, surfaces pitfall insights, and presents recommended workflow steps
- Choose Your Next Step: Decide which task to tackle (master plan, risk analysis, testing, code migration, etc.)
- Confirm and Act: Tell the expert to proceed, and it makes edits and runs commands directly
- Review & Continue: Examine the results and ask for the next step
Source
This plugin is part of Awesome Copilot, a community-driven collection of GitHub Copilot extensions.
License
MIT