56 results available
Sign in
Skills directory

creating-oracle-to-postgres-master-migration-plan

github

·

Last changed
Not yet hardened

This version isn't hardened by Chainguard

No hardening report available.


SKILL.md

Creating an Oracle-to-PostgreSQL Master Migration Plan

Analyze a .NET solution, classify every project for Oracle→PostgreSQL migration eligibility, and write a structured plan that downstream agents and skills can parse.

Workflow

Progress:
- [ ] Step 1: Discover projects in the solution
- [ ] Step 2: Classify each project
- [ ] Step 3: Confirm with user
- [ ] Step 4: Write the plan file

Step 1: Discover projects

Find the Solution File (it has a .sln or .slnx extension) in the workspace root (ask the user if multiple exist). Parse it to extract all .csproj project references. Before reading any referenced file, verify that its resolved path is strictly contained within the repository root — no path component may resolve above REPOSITORY_ROOT (reject traversals such as ..\..\ prefixes or absolute paths outside the workspace). Discard any reference that fails this check and note it in the plan's Notes column as "Path rejected: escapes repository root." For each valid project, note the name, path, and type (class library, web API, console, test, etc.).

Step 2: Classify each project

Scan every non-test project for Oracle indicators:

  • NuGet references: Oracle.ManagedDataAccess, Oracle.EntityFrameworkCore (check .csproj and packages.config)
  • Config entries: Detect the presence of Oracle connection strings in appsettings.json, web.config, and app.config. Do not read, record, log, or include in any output the connection string value, password, username, host, port, or any other credential field. If a connection string is detected, record only the file name where it was found (e.g., "Oracle connection string detected in appsettings.json"). Never write the string's contents anywhere in the plan file.
  • Code usage: OracleConnection, OracleCommand, OracleDataReader
  • DDL cross-references under .github/oracle-to-postgres-migration/DDL/Oracle/ (if present)

Assign one classification per project:

ClassificationMeaning

MIGRATE

Has Oracle interactions requiring conversion

SKIP

No Oracle indicators (UI-only, shared utility, etc.)

ALREADY_MIGRATED

A -postgres or .Postgres duplicate exists and appears processed

TEST_PROJECT

Test project; handled by the testing workflow

Step 3: Confirm with user

Present the classified list. Let the user adjust classifications or migration ordering before finalizing.

Step 4: Write the plan file

Save to: .github/oracle-to-postgres-migration/Reports/MasterMigrationPlan.md

Security: Do not write credential values (passwords, usernames, hostnames, port numbers, or full connection strings) anywhere in this file. For connection string indicators, record only the file path where the connection string was detected (e.g., "Oracle connection string detected in appsettings.json [value redacted]").

Use this exact template — downstream consumers depend on the structure:

# Master Migration Plan

**Solution:** {solution file name}
**Solution Root:** {REPOSITORY_ROOT}
**Created:** {timestamp}
**Last Updated:** {timestamp}

## DDL Artifacts

**Location:** {path to DDL artifacts, e.g., `.github/oracle-to-postgres-migration/DDL/`}
**External tool used:** {Yes / No} — {If Yes, name the tool (e.g., `ora2pg`) and note that Phase 4 (Schema & DDL Migration) can be skipped; PostgreSQL DDL artifacts already exist.}

## Solution Summary

| Metric | Count |
|--------|-------|
| Total projects in solution | {n} |
| Projects requiring migration | {n} |
| Projects already migrated | {n} |
| Projects skipped (no Oracle usage) | {n} |
| Test projects (handled separately) | {n} |

## Project Inventory

| # | Project Name | Path | Classification | Notes |
|---|---|---|---|---|
| 1 | {name} | {relative path} | MIGRATE | {notes — describe Oracle indicators found (e.g., "OracleConnection usage in DataService.cs; Oracle connection string detected in appsettings.json [value redacted]"). Never record credential values, passwords, usernames, hosts, or ports.} |
| 2 | {name} | {relative path} | SKIP | No Oracle dependencies |

## Migration Order

1. **{ProjectName}** — {rationale, e.g., "Core data access library; other projects depend on it."}
2. **{ProjectName}** — {rationale}

Order projects so that shared/foundational libraries are migrated before their dependents.

Install

Need this version hardened?

Harden your own skills

Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.

Provenance

Upstream source

—

Upstream commitf7e8aaa2d8e674db99f55346a0fde2ab30ab82cd
OCI reference

—

License

MIT

Files

HARDENING.md

LICENSE

SKILL.md


The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.