Generated banner for Ssma Console
Generated logo for Ssma Console

Ssma Console

GitHubOfficialFirst committed by kapilsamantDistributed by GitHub

  • Skill
  • Workflow
  • Automation and integrations
  • MIT
  • No issues found

From the author

Use when: SSMA console operations — create project, generate assessment report, convert schema, migrate data, Oracle to SQL Server migration, schema conversion, data migration
— the description by kapilsamant

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to performing database migrations from Oracle to SQL Server using the SSMA (SQL Server Migration Assistant) console. It guides the user through generating the necessary XML configuration files (variables, servers, and operation scripts) and executing the migration process directly via the SSMA console executable. The skill covers the full lifecycle, including project creation, assessment reporting, schema conversion, and data migration, while addressing common pitfalls like TNS connection modes and namespace resolution.

What it does

  • Generates required XML configuration files for SSMA console operations.
  • Configures Oracle and SQL Server connection parameters.
  • Creates assessment reports to evaluate migration readiness.
  • Executes schema conversion and deployment to the target SQL Server.
  • Performs end-to-end data migration between source and target databases.
  • Summarizes migration results and logs for verification.

When to use it

  • When migrating Oracle databases to SQL Server using the command line.
  • When you need to automate repetitive migration tasks without a GUI.
  • When generating standardized assessment reports for migration planning.
  • When troubleshooting common SSMA console errors like ORA-12505 or namespace issues.

Advantages

  • Enables repeatable, scriptable migration workflows.
  • Reduces manual configuration errors by using standardized XML templates.
  • Provides clear guidance on resolving common connectivity and schema mapping issues.
  • Supports full-cycle migration from assessment to data transfer.

Usage examples

“Create an SSMA assessment report for my Oracle database.”
The agent will collect your Oracle and SQL Server connection details, generate the necessary XML files, and execute the assessment report command, providing a summary of the findings.
“Migrate my Oracle schema to SQL Server 2022.”
The agent will generate the configuration files and run the schema conversion and synchronization commands, reporting the status of the deployment.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/github/ssma-console/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip ssma-console.zip -d .agents/skills

Documentation by kapilsamant

SSMA Console — Oracle to SQL Server Migration

Generate XML configs and invoke SSMAforOracleConsole.exe directly — no external scripts or wrappers.

Operations (run in order for "full migration"):

  1. create-project — connect source & target, map schema

  2. generate-report — assessment report

  3. migrate-schema — convert & deploy schema

  4. migrate-data — convert, deploy, migrate data end-to-end

Collect Inputs

Ask for missing parameters. Defaults in parentheses.

Oracle: Host (localhost), Port (1521), Instance (required, service name), User, Password, Schema SQL Server: Server, Database, User, Password, Encrypt (true), Trust Server Certificate (true), Target Schema (dbo) Project: Name (ssma-migration), Folder (.), Type (sql-server-2022 — also 2016/2017/2019/2025/sql-azure), SSMA Path (C:\Program Files\Microsoft SQL Server Migration Assistant for Oracle\bin\SSMAforOracleConsole.exe)

Generate XML Files

Resolve ALL {PLACEHOLDER} tokens before writing. Generate 3 files:

ssma-variables.xml
<?xml version="1.0" encoding="utf-8"?>
<variables>
  <variable name="$WorkingFolder$" value="{PROJECT_FOLDER}" />
  <variable name="$ProjectType$" value="{PROJECT_TYPE}" />
  <variable name="$ProjectName$" value="{PROJECT_NAME}" />
  <variable-group name="OracleConnection">
    <variable name="$OracleHostName$" value="{ORACLE_HOST}" />
    <variable name="$OracleInstance$" value="{ORACLE_INSTANCE}" />
    <variable name="$OraclePort$" value="{ORACLE_PORT}" />
    <variable name="$OracleUserName$" value="{ORACLE_USER}" />
    <variable name="$OraclePassword$" value="{ORACLE_PASSWORD}" />
    <variable name="$OracleSchemaName$" value="{ORACLE_SCHEMA}" />
  </variable-group>
  <variable-group name="SQLServerConnection">
    <variable name="$SQLServerName$" value="{SQL_SERVER}" />
    <variable name="$SQLServerDb$" value="{SQL_DATABASE}" />
    <variable name="$SQLServerUsrID$" value="{SQL_USER}" />
    <variable name="$SQLServerPwd$" value="{SQL_PASSWORD}" />
  </variable-group>
  <variable-group name="ReportSettings">
    <variable name="$SummaryReportFile$" value="Reports\Assessment\AssessmentReport.xml" />
    <variable name="$ConversionReportFile$" value="Reports\Conversion\ConversionReport.xml" />
    <variable name="$ConversionReportFolder$" value="Reports\Conversion" />
    <variable name="$DataMigrationReportFile$" value="Reports\Migration\DataMigrationReport.xml" />
    <variable name="$SynchronizationReportFolder$" value="Reports\Synchronization" />
  </variable-group>
</variables>
ssma-servers.xml

CRITICAL: Use tns-name-mode — standard-mode treats instance as SID and fails with ORA-12505.

<?xml version="1.0" encoding="utf-8"?>
<servers>
  <oracle name="source_oracle">
    <tns-name-mode>
      <connection-provider value="OracleClient" />
      <service-name value="(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = $OracleHostName$)(PORT = $OraclePort$)))(CONNECT_DATA =(SERVICE_NAME = $OracleInstance$)))" />
      <user-id value="$OracleUserName$" />
      <password value="$OraclePassword$" />
    </tns-name-mode>
  </oracle>
  <sql-server name="target_sqlserver">
    <sql-server-authentication>
      <server value="$SQLServerName$" />
      <database value="$SQLServerDb$" />
      <user-id value="$SQLServerUsrID$" />
      <password value="$SQLServerPwd$" />
      <encrypt value="{ENCRYPT}" />
      <trust-server-certificate value="{TRUST_CERT}" />
    </sql-server-authentication>
  </sql-server>
</servers>
Operation Script XML

Generate one script per operation. All scripts share this common <config> block (add <object-overwrite action="overwrite" /> for migrate-schema/migrate-data, add <data-migration-connection source-use-last-used="true" target-server="target_sqlserver" /> for migrate-data, use every-5% progress for schema/data ops):

<config>
  <output-providers>
    <output-window suppress-messages="false" destination="stdout" />
    <upgrade-project action="yes" />
    <user-input-popup mode="continue" />
    <progress-reporting enable="true" report-messages="true" report-progress="every-10%" />
    <log-verbosity level="info" />
  </output-providers>
</config>

All scripts start with this preamble in <script-commands>:

<create-new-project project-folder="$WorkingFolder$" project-name="$ProjectName$"
                    overwrite-if-exists="true" project-type="$ProjectType$" />
<connect-source-database server="source_oracle">
  <object-to-collect object-name="$OracleSchemaName$" />
</connect-source-database>

CRITICAL: Always include <object-to-collect> — without it, map-schema fails with "Source namespace was not found".

Per-operation commands (after preamble, before <save-project />):

OperationFileCommands after preamble
create-projectssma-create-project.xmlconnect-target-database → map-schema source-schema="$OracleSchemaName$" sql-server-schema="$SQLServerDb$.{TARGET_SCHEMA}"
generate-reportssma-assessment.xmlgenerate-assessment-report object-name="$OracleSchemaName$" object-type="Schemas" write-summary-report-to="$SummaryReportFile$" verbose="true" report-errors="true"
migrate-schemassma-schema.xmlconnect-target-database → map-schema → convert-schema (to $ConversionReportFile$) → synchronize-target object-name="$SQLServerDb$.{TARGET_SCHEMA}"
migrate-datassma-data.xmlSame as migrate-schema + refresh-from-database → migrate-data object-name="$OracleSchemaName$.Tables" object-type="category" (to $DataMigrationReportFile$) → close-project

Execute

Show resolved XML and command to user. Confirm before running.

New-Item -ItemType Directory -Force -Path "Reports\Assessment","Reports\Conversion","Reports\Migration","Reports\Synchronization","Logs" | Out-Null
& "{SSMA_CONSOLE_PATH}" -s "{SCRIPT_XML}" -c "ssma-servers.xml" -v "ssma-variables.xml" -l "Logs\{OPERATION}.log"

Report Results

Check exit code (0 = success), read logs and reports (Reports\Assessment\, Reports\Conversion\, Reports\Migration\), summarize findings.

Constraints

  • No external scripts — no .ps1, .bat, .sh

  • Confirm connection details before executing

  • Resolve all placeholders — no {...} in final XML

  • Create output directories before execution

Known Pitfalls

SymptomFix
ORA-12505: SID not registeredUse tns-name-mode, not standard-mode
Source namespace was not foundAdd <object-to-collect> to connect-source-database
not found in metabase on force-loadUse object-to-collect instead — force-load is unreliable
SQL Server Agent is not runningWarning only — BCP client-side migration still works

Files

Requirements and compatibility

Written for: GitHub Copilot

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

First committed by
GitHub avatar of kapilsamantkapilsamant
Publisher
GitHub (Official)
Distributed by
GitHub
Source
github/awesome-copilot · skills/ssma-console · commit 797337f
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
kapilsamant

AutoGineer is not affiliated with or endorsed by kapilsamant or GitHub.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download ssma-console.zip