{"id":"96282cdd-6b26-40f3-b9f4-5b80c2d31fcd","shortId":"Z7Lxjt","kind":"skill","title":"ssma-console","tagline":"Use when: SSMA console operations — create project, generate assessment report, convert schema, migrate data, Oracle to SQL Server migration, schema conversion, data migration","description":"# SSMA Console — Oracle to SQL Server Migration\n\nGenerate XML configs and invoke `SSMAforOracleConsole.exe` directly — no external scripts or wrappers.\n\n**Operations** (run in order for \"full migration\"):\n1. **create-project** — connect source & target, map schema\n2. **generate-report** — assessment report\n3. **migrate-schema** — convert & deploy schema\n4. **migrate-data** — convert, deploy, migrate data end-to-end\n\n## Collect Inputs\n\nAsk for missing parameters. Defaults in parentheses.\n\n**Oracle**: Host (`localhost`), Port (`1521`), Instance *(required, service name)*, User, Password, Schema\n**SQL Server**: Server, Database, User, Password, Encrypt (`true`), Trust Server Certificate (`true`), Target Schema (`dbo`)\n**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`)\n\n## Generate XML Files\n\nResolve ALL `{PLACEHOLDER}` tokens before writing. Generate 3 files:\n\n### `ssma-variables.xml`\n\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<variables>\n  <variable name=\"$WorkingFolder$\" value=\"{PROJECT_FOLDER}\" />\n  <variable name=\"$ProjectType$\" value=\"{PROJECT_TYPE}\" />\n  <variable name=\"$ProjectName$\" value=\"{PROJECT_NAME}\" />\n  <variable-group name=\"OracleConnection\">\n    <variable name=\"$OracleHostName$\" value=\"{ORACLE_HOST}\" />\n    <variable name=\"$OracleInstance$\" value=\"{ORACLE_INSTANCE}\" />\n    <variable name=\"$OraclePort$\" value=\"{ORACLE_PORT}\" />\n    <variable name=\"$OracleUserName$\" value=\"{ORACLE_USER}\" />\n    <variable name=\"$OraclePassword$\" value=\"{ORACLE_PASSWORD}\" />\n    <variable name=\"$OracleSchemaName$\" value=\"{ORACLE_SCHEMA}\" />\n  </variable-group>\n  <variable-group name=\"SQLServerConnection\">\n    <variable name=\"$SQLServerName$\" value=\"{SQL_SERVER}\" />\n    <variable name=\"$SQLServerDb$\" value=\"{SQL_DATABASE}\" />\n    <variable name=\"$SQLServerUsrID$\" value=\"{SQL_USER}\" />\n    <variable name=\"$SQLServerPwd$\" value=\"{SQL_PASSWORD}\" />\n  </variable-group>\n  <variable-group name=\"ReportSettings\">\n    <variable name=\"$SummaryReportFile$\" value=\"Reports\\Assessment\\AssessmentReport.xml\" />\n    <variable name=\"$ConversionReportFile$\" value=\"Reports\\Conversion\\ConversionReport.xml\" />\n    <variable name=\"$ConversionReportFolder$\" value=\"Reports\\Conversion\" />\n    <variable name=\"$DataMigrationReportFile$\" value=\"Reports\\Migration\\DataMigrationReport.xml\" />\n    <variable name=\"$SynchronizationReportFolder$\" value=\"Reports\\Synchronization\" />\n  </variable-group>\n</variables>\n```\n\n### `ssma-servers.xml`\n\n**CRITICAL**: Use `tns-name-mode` — `standard-mode` treats instance as SID and fails with ORA-12505.\n\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<servers>\n  <oracle name=\"source_oracle\">\n    <tns-name-mode>\n      <connection-provider value=\"OracleClient\" />\n      <service-name value=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = $OracleHostName$)(PORT = $OraclePort$)))(CONNECT_DATA =(SERVICE_NAME = $OracleInstance$)))\" />\n      <user-id value=\"$OracleUserName$\" />\n      <password value=\"$OraclePassword$\" />\n    </tns-name-mode>\n  </oracle>\n  <sql-server name=\"target_sqlserver\">\n    <sql-server-authentication>\n      <server value=\"$SQLServerName$\" />\n      <database value=\"$SQLServerDb$\" />\n      <user-id value=\"$SQLServerUsrID$\" />\n      <password value=\"$SQLServerPwd$\" />\n      <encrypt value=\"{ENCRYPT}\" />\n      <trust-server-certificate value=\"{TRUST_CERT}\" />\n    </sql-server-authentication>\n  </sql-server>\n</servers>\n```\n\n### Operation Script XML\n\nGenerate 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):\n\n```xml\n<config>\n  <output-providers>\n    <output-window suppress-messages=\"false\" destination=\"stdout\" />\n    <upgrade-project action=\"yes\" />\n    <user-input-popup mode=\"continue\" />\n    <progress-reporting enable=\"true\" report-messages=\"true\" report-progress=\"every-10%\" />\n    <log-verbosity level=\"info\" />\n  </output-providers>\n</config>\n```\n\nAll scripts start with this **preamble** in `<script-commands>`:\n\n```xml\n<create-new-project project-folder=\"$WorkingFolder$\" project-name=\"$ProjectName$\"\n                    overwrite-if-exists=\"true\" project-type=\"$ProjectType$\" />\n<connect-source-database server=\"source_oracle\">\n  <object-to-collect object-name=\"$OracleSchemaName$\" />\n</connect-source-database>\n```\n\n**CRITICAL**: Always include `<object-to-collect>` — without it, `map-schema` fails with \"Source namespace was not found\".\n\n**Per-operation commands** (after preamble, before `<save-project />`):\n\n| Operation | File | Commands after preamble |\n|-----------|------|------------------------|\n| create-project | `ssma-create-project.xml` | `connect-target-database` → `map-schema source-schema=\"$OracleSchemaName$\" sql-server-schema=\"$SQLServerDb$.{TARGET_SCHEMA}\"` |\n| generate-report | `ssma-assessment.xml` | `generate-assessment-report object-name=\"$OracleSchemaName$\" object-type=\"Schemas\" write-summary-report-to=\"$SummaryReportFile$\" verbose=\"true\" report-errors=\"true\"` |\n| migrate-schema | `ssma-schema.xml` | `connect-target-database` → `map-schema` → `convert-schema` (to `$ConversionReportFile$`) → `synchronize-target object-name=\"$SQLServerDb$.{TARGET_SCHEMA}\"` |\n| migrate-data | `ssma-data.xml` | Same as migrate-schema + `refresh-from-database` → `migrate-data object-name=\"$OracleSchemaName$.Tables\" object-type=\"category\"` (to `$DataMigrationReportFile$`) → `close-project` |\n\n## Execute\n\nShow resolved XML and command to user. Confirm before running.\n\n```powershell\nNew-Item -ItemType Directory -Force -Path \"Reports\\Assessment\",\"Reports\\Conversion\",\"Reports\\Migration\",\"Reports\\Synchronization\",\"Logs\" | Out-Null\n& \"{SSMA_CONSOLE_PATH}\" -s \"{SCRIPT_XML}\" -c \"ssma-servers.xml\" -v \"ssma-variables.xml\" -l \"Logs\\{OPERATION}.log\"\n```\n\n## Report Results\n\nCheck exit code (`0` = success), read logs and reports (`Reports\\Assessment\\`, `Reports\\Conversion\\`, `Reports\\Migration\\`), summarize findings.\n\n## Constraints\n\n- No external scripts — no `.ps1`, `.bat`, `.sh`\n- Confirm connection details before executing\n- Resolve all placeholders — no `{...}` in final XML\n- Create output directories before execution\n\n## Known Pitfalls\n\n| Symptom | Fix |\n|---------|-----|\n| `ORA-12505: SID not registered` | Use `tns-name-mode`, not `standard-mode` |\n| `Source namespace was not found` | Add `<object-to-collect>` to `connect-source-database` |\n| `not found in metabase` on `force-load` | Use `object-to-collect` instead — `force-load` is unreliable |\n| `SQL Server Agent is not running` | Warning only — BCP client-side migration still works |","tags":["ssma","console","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"capabilities":["skill","source-github","skill-ssma-console","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/ssma-console","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (6,916 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:25.908Z","embedding":null,"createdAt":"2026-05-15T06:52:31.146Z","updatedAt":"2026-05-18T18:52:25.908Z","lastSeenAt":"2026-05-18T18:52:25.908Z","tsv":"'-12505':188,457 '-5':217 '/migrate-data':209 '0':413 '1':53 '1521':100 '2':62 '2016':135 '2017':136 '2019':137 '2022':133 '2025':138 '3':68,166 '4':75 'add':204,210,475 'agent':502 'also':134 'alway':232 'ask':89 'assess':12,66,286,383,420 'assist':151 'azur':141 'bat':433 'bcp':508 'bin':154 'block':203 'c':144,400 'categori':357 'certif':118 'check':410 'client':510 'client-sid':509 'close':361 'close-project':360 'code':412 'collect':87,493 'command':249,255,368 'common':202 'config':36 'confirm':371,435 'connect':57,263,313,436,478 'connect-source-databas':477 'connect-target-databas':262,312 'consol':3,7,28,395 'constraint':427 'convers':24,385,422 'conversionreportfil':323 'convert':14,72,79,320 'convert-schema':319 'creat':9,55,259,447 'create-project':54,258 'critic':171,231 'data':17,25,78,82,214,335,348 'databas':111,265,315,345,480 'datamigrationreportfil':359 'dbo':122 'default':93 'deploy':73,80 'detail':437 'direct':40 'directori':379,449 'encrypt':114 'end':84,86 'end-to-end':83 'error':306 'everi':216 'execut':363,439,451 'exit':411 'extern':42,429 'fail':185,239 'file':146,158,167,254 'final':445 'find':426 'fix':455 'folder':128 'forc':380,487,496 'force-load':486,495 'found':245,474,482 'full':51 'generat':11,34,64,156,165,193,281,285 'generate-assessment-report':284 'generate-report':63,280 'host':97 'includ':233 'input':88 'instanc':101,181 'instead':494 'invok':38 'item':377 'itemtyp':378 'known':452 'l':404 'load':488,497 'localhost':98 'log':390,405,407,416 'map':60,237,267,317 'map-schema':236,266,316 'metabas':484 'microsoft':147 'migrat':16,22,26,33,52,70,77,81,127,150,207,213,309,334,340,347,387,424,512 'migrate-data':76,212,333,346 'migrate-schema':69,206,308,339 'miss':91 'mode':176,179,465,469 'name':104,124,175,290,329,351,464 'namespac':242,471 'new':376 'new-item':375 'null':393 'object':289,293,328,350,355,491 'object-nam':288,327,349 'object-to-collect':490 'object-typ':292,354 'one':194 'op':221 'oper':8,46,190,197,248,253,406 'ora':187,456 'oracl':18,29,96,153 'oracleschemanam':272,291,352 'order':49 'out-nul':391 'output':448 'paramet':92 'parenthes':95 'password':106,113 'path':143,381,396 'per':196,247 'per-oper':246 'pitfal':453 'placehold':161,442 'port':99 'powershel':374 'preambl':228,251,257 'program':145 'progress':218 'project':10,56,123,260,362 'ps1':432 'read':415 'refresh':343 'refresh-from-databas':342 'regist':460 'report':13,65,67,282,287,299,305,382,384,386,388,408,418,419,421,423 'report-error':304 'requir':102 'resolv':159,365,440 'result':409 'run':47,373,505 'schema':15,23,61,71,74,107,121,208,238,268,271,276,279,295,310,318,321,332,341 'schema/data':220 'script':43,191,195,199,224,398,430 'server':21,32,109,110,117,132,149,275,501 'servic':103 'sh':434 'share':200 'show':364 'sid':183,458 'side':511 'skill' 'skill-ssma-console' 'sourc':58,241,270,470,479 'source-github' 'source-schema':269 'sql':20,31,108,131,140,148,274,500 'sql-azur':139 'sql-server':130 'sql-server-schema':273 'sqlserverdb':277,330 'ssma':2,6,27,126,142,394 'ssma-assessment.xml':283 'ssma-consol':1 'ssma-create-project.xml':261 'ssma-data.xml':336 'ssma-migr':125 'ssma-schema.xml':311 'ssma-servers.xml':170,401 'ssma-variables.xml':168,403 'ssmafororacleconsole.exe':39,155 'standard':178,468 'standard-mod':177,467 'start':225 'still':513 'success':414 'summar':425 'summari':298 'summaryreportfil':301 'symptom':454 'synchron':325,389 'synchronize-target':324 'tabl':353 'target':59,120,264,278,314,326,331 'tns':174,463 'tns-name-mod':173,462 'token':162 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'treat':180 'true':115,119,303,307 'trust':116 'type':129,294,356 'unreli':499 'use':4,172,215,461,489 'user':105,112,370 'v':402 'verbos':302 'warn':506 'without':234 'work':514 'wrapper':45 'write':164,297 'write-summary-report-to':296 'xml':35,157,169,189,192,222,230,366,399,446","prices":[{"id":"b4cdc2f6-a995-46f9-b72d-3bccb9999621","listingId":"96282cdd-6b26-40f3-b9f4-5b80c2d31fcd","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-05-15T06:52:31.146Z"}],"sources":[{"listingId":"96282cdd-6b26-40f3-b9f4-5b80c2d31fcd","source":"github","sourceId":"github/awesome-copilot/ssma-console","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/ssma-console","isPrimary":false,"firstSeenAt":"2026-05-15T06:52:31.146Z","lastSeenAt":"2026-05-18T18:52:25.908Z"}],"details":{"listingId":"96282cdd-6b26-40f3-b9f4-5b80c2d31fcd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"ssma-console","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"e6afe21b0f4651a2df62eede92bf9e8c56f10948","skill_md_path":"skills/ssma-console/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/ssma-console"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"ssma-console","description":"Use when: SSMA console operations — create project, generate assessment report, convert schema, migrate data, Oracle to SQL Server migration, schema conversion, data migration"},"skills_sh_url":"https://skills.sh/github/awesome-copilot/ssma-console"},"updatedAt":"2026-05-18T18:52:25.908Z"}}