Dms Schema Conversion
AWSOfficialPublished by AWS
- Skill
- Workflow
- Cloud and DevOps
- Apache-2.0
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a comprehensive workflow for migrating database schemas between heterogeneous engines using AWS DMS Schema Conversion. It guides users through the entire lifecycle, including project setup, metadata import, compatibility assessment, schema conversion, and applying changes to target databases. The skill includes built-in support for navigating metadata trees, generating conversion reports, and resolving action items identified during the assessment process.
What it does
- Automates the creation and management of AWS DMS migration projects.
- Performs compatibility assessments to estimate migration effort and complexity.
- Converts source database schemas to target engine formats.
- Provides tools to navigate and inspect source and target metadata models.
- Generates and interprets conversion assessment reports for actionable insights.
- Applies converted schema changes directly to target databases.
When to use it
- When planning or executing a database migration between different database engines.
- When you need to assess the complexity of a schema migration before committing to it.
- When you need to convert specific SQL statements between database engines.
- When you need to audit and resolve specific conversion issues identified by AWS DMS.
Advantages
- Streamlines complex migration tasks into a repeatable, guided workflow.
- Provides clear visibility into migration progress and potential compatibility issues.
- Supports both automated conversion and manual intervention for complex objects.
- Ensures consistent attribution of operations via standardized environment variables.
Usage examples
- “I need to migrate my SQL Server schema to Aurora PostgreSQL. Can you help me set up a project?”
- The agent will initiate the migration project setup wizard, guide you through data provider configuration, and perform an initial metadata import.
- “Run a compatibility assessment for my 'sales' schema and show me the summary.”
- The agent will build the necessary selection rules, trigger the assessment, download the summary report from S3, and present the object conversion statistics.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/aws/dms-schema-conversion/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip dms-schema-conversion.zip -d .agents/skills
Documentation by AWS
DMS Schema Conversion
Overview
This skill handles the full DMS Schema Conversion lifecycle — from first-time setup to running conversions on an existing project.
The AWS MCP server is recommended for streamlined execution, audit logging, and observability. When the MCP server is not available, all operations can be performed via AWS CLI directly.
Key documentation:
Selection rules in DMS Schema Conversion — scoping operations to specific objects
Transformation rules in DMS Schema Conversion — renaming schemas, tables, columns during conversion
Global constraint: You MUST fetch and read any linked documentation before acting on it — do NOT rely on memory for any referenced material (selection rules, transformation rules, troubleshooting guides, network configuration, etc.). Documentation contains vendor-specific details that change between engines and API versions.
Guardrail — where this skill's own files live (MCP vs local install)
This skill can be loaded two ways, and they resolve the skill's own bundled files from different places. Determine how the skill was loaded before reading a reference:
Loaded through the AWS MCP
retrieve_skilltool: The skill is not installed on the local filesystem. You MUST fetch each reference viaretrieve_skillwith thefileparameter (e.g.file="references/setup-wizard.md"). Do NOTfile_readthese paths locally — they do not exist on disk.Installed locally (e.g.
.kiro/skills/dms-schema-conversion/or~/.claude/skills/dms-schema-conversion/): Read files from the local skill directory using relative paths.
This distinction applies only to the skill's own packaged files. User data and session artifacts are always read from and written to the user's working directory. Never fetch or write customer data through retrieve_skill.
Verify Dependencies
Before starting, check that AWS CLI commands can be executed.
Constraints:
You MUST verify that AWS CLI commands can be run (via MCP server tools or directly via shell)
You MUST inform the customer if no execution method is available and ask whether to proceed
You MUST ask the customer which AWS region to use — do NOT attempt to infer it from the STS response (it does not contain a region field). If the customer is unsure, suggest checking the
AWS_DEFAULT_REGIONenvironment variable or the--regionflag they are using.You MUST set the
AWS_EXECUTION_ENVenvironment variable toAWSMCP-DMSSchemaConversion-Skillbefore running any AWS CLI command in this skill, so that calls made during this agentic workflow are attributable in the CloudTrailuserAgentfield. The AWS CLI and botocore append this value to the request User-Agent asexec-env/AWSMCP-DMSSchemaConversion-Skill. Set it once for the session (export AWS_EXECUTION_ENV=AWSMCP-DMSSchemaConversion-Skill) or prefix each command (AWS_EXECUTION_ENV=AWSMCP-DMSSchemaConversion-Skill aws dms ...). The value is a best-effort attribution marker only — it is not an access control, and it MUST contain no spaces so it stays a single User-Agent token.
Project Selection
Check for existing migration projects:
aws dms describe-migration-projectsIf exactly one project exists → ask the customer: "Found migration project
<name>. Would you like to use it, or create a new one?" If they confirm, storemigration_project_identifierand proceed to Actions Menu. If they want a new one, run the setup wizard.If multiple projects exist → list them and ask the customer to pick one, or offer to create a new project. Store
migration_project_identifier, proceed to Actions Menu.If no projects exist → ask: "No migration projects found. Would you like to create one?" If yes, load setup-wizard.md and run the full setup wizard from Phase 1. After wizard completes, run Auto Import, then proceed to Actions Menu.
Auto Import
This section runs only after the setup wizard creates a new project. Do NOT run for existing projects.
Build selection rules to import all schemas from the source server. For
server-name, use the data provider identifier (the short ID from the ARN, e.g.,JIFET2LUZJEJZPDYSOSGANOA2M) or the literalServerNamevalue from the data provider settings (e.g.,"offline"for offline sources). For SQL Server, you MUST includedatabase-namein the object locator. See Selection rules in DMS Schema Conversion for JSON format.Run
start-metadata-model-importwith--origin SOURCE --refreshand the selection rules from step 1. ExtractRequestIdentifierfrom the response.Wait for import completion using the DMS waiter:
aws dms wait metadata-model-imported \ --migration-project-identifier <migration_project_identifier> \ --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'If the waiter fails or is unavailable, fall back to polling
describe-metadata-model-importsevery 30 seconds with--filter Name=request-id,Values=<RequestIdentifier>. Terminal statuses: SUCCESS (proceed) or FAILED (check error via theErrorfield in the response).Show discovered schemas: On success, call
describe-metadata-model-childrenwith--origin SOURCEat the root level to list the imported schemas/databases. Present the discovered names to the customer so they can confirm the correct database connection was established:"Import complete. I found the following schemas/databases:
<list>. Does this look correct?"Proceed to Actions Menu.
Actions Menu
Present the actions menu using a structured selection tool (e.g., AskUserQuestion) if available — this gives the customer a clickable/selectable list.
For SQL Server → PostgreSQL/Aurora PostgreSQL projects (present as a single-select question "What would you like to do?"):
Convert database — convert schema objects to the target engine (also produces an conversion assessment report)
Assess database — run a compatibility assessment (also produces an conversion assessment report)
Convert statement — convert a single SQL statement
Clean up — delete migration project and related DMS resources
For all other engine combinations (present as a single-select question "What would you like to do?"):
Convert database — convert schema objects to the target engine (also produces an conversion assessment report)
Assess database — run a compatibility assessment (also produces an conversion assessment report)
Work with tree — browse the metadata model tree
Clean up — delete migration project and related DMS resources
The customer can always type a custom request via "Other" (e.g., "work with tree", "show database statistics", or "exit"). If the customer selects "Other" and describes an action covered by this skill, handle it accordingly.
After each action completes, return to this menu by presenting the same selection again.
Note on metadata loading:
start-metadata-model-import(withRefresh=false),start-metadata-model-assessment, andstart-metadata-model-conversionall load the source tree for the scoped objects. If metadata was already imported in the current session for a given subtree, it does not need to be re-imported — these operations will work with what is already loaded.
Convert Database
Ask what to convert: Ask the customer what they want to convert (e.g., "all schemas", "schema public", "tables starting with PROD_").
Build selection rules: Translate the customer's natural language to selection rules JSON. Refer to Selection rules in DMS Schema Conversion for format, wildcards, and vendor-specific locators.
Run conversion: Call
start-metadata-model-conversionwith the migration project and selection rules. ExtractRequestIdentifierfrom the response.Wait for completion: Wait using the DMS waiter:
aws dms wait metadata-model-converted \ --migration-project-identifier <migration_project_identifier> \ --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'If the waiter fails or is unavailable, fall back to polling
describe-metadata-model-conversionsevery 30 seconds with--filter Name=request-id,Values=<RequestIdentifier>. Terminal statuses: SUCCESS (proceed) or FAILED (check error).Export conversion assessment report: On conversion success, call
export-metadata-model-assessmentwith selection rules usingrule-action: "explicit"(this API requires explicit rules, notinclude). Provide the customer with S3 links for both PDF and CSV reports (PdfReport.S3ObjectKeyandCsvReport.S3ObjectKey).Show summary: Download the Summary CSV from S3 using
aws s3 cp s3://<bucket>/<CsvReport.S3ObjectKey> ./Summary.csv. Present its contents to the customer — show the number of objects per category, how many converted automatically, and how many have Action Items at each complexity level.Post-convert sub-menu: After showing the summary, present options. Only show "Apply to target" if the target is a live target (not virtual):
"What would you like to do next?
Fix Action Items — review and fix Action Items from the conversion assessment report
Export as script — export converted DDL as SQL script to S3
Apply to target — apply converted objects to the target database (live targets only)
Back — return to actions menu"
Fix Action Items: Load action-items.md and follow the fixing workflow there.
Export as script: Run
aws dms start-metadata-model-export-as-script --migration-project-identifier <migration_project_identifier> --origin TARGET --selection-rules '<json>'. ExtractRequestIdentifier. Wait viaaws dms wait metadata-model-exported-as-script --migration-project-identifier <id> --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'. Provide the S3 link on completion.Apply to target: Run
aws dms start-metadata-model-export-to-target --migration-project-identifier <migration_project_identifier> --selection-rules '<json>'. Optionally pass--overwrite-extension-packif the customer confirms. ExtractRequestIdentifier. Wait viaaws dms wait metadata-model-exported-to-target --migration-project-identifier <id> --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'. Inform the customer on completion.Back: Return to Actions Menu.
After completing, ask the customer what they'd like to do next.
Assess Database
Assessment analyzes conversion complexity and generates an conversion assessment report without actually converting any objects. Use this when the customer wants to understand the migration effort before committing to conversion.
Important: If the customer already ran a conversion on the same scope, a separate assessment is not necessary — conversion already produces an conversion assessment report. Inform the customer: "You already have an conversion assessment report from the conversion you ran. Would you like me to show that report instead, or do you want to re-run assessment on a different scope?"
Ask what to assess: Ask the customer what they want to assess (e.g., "all schemas", "schema pg_catalog", "tables starting with PROD_").
Build selection rules: Translate the customer's natural language to selection rules JSON. Refer to Selection rules in DMS Schema Conversion for format, wildcards, and vendor-specific locators.
Run assessment: Call
start-metadata-model-assessmentwith the migration project and selection rules. ExtractRequestIdentifierfrom the response.Wait for completion: Wait using the DMS waiter:
aws dms wait metadata-model-assessed \ --migration-project-identifier <migration_project_identifier> \ --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'If the waiter fails or is unavailable, fall back to polling
describe-metadata-model-assessmentsevery 30 seconds with--filter Name=request-id,Values=<RequestIdentifier>. Terminal statuses: SUCCESS (proceed) or FAILED (check error).Export conversion assessment report: On success, call
export-metadata-model-assessmentwith the same selection rules. Provide the customer with S3 links for both PDF and CSV reports (PdfReport.S3ObjectKeyandCsvReport.S3ObjectKey). The report contains conversion complexity statistics, Action Items, and estimated effort.Show summary: Download the Summary CSV from S3 using
aws s3 cp s3://<bucket>/<CsvReport.S3ObjectKey> ./Summary.csv. Present its contents to the customer — show the number of objects per category, how many converted automatically, and how many have Action Items at each complexity level.Offer to fix Action Items: Ask the customer:
"Would you like me to help fix the Action Items?"
If yes, load action-items.md and follow the fixing workflow there.
After completing, ask the customer what they'd like to do next.
Review Action Items
Load action-items.md and follow the workflow there.
After completing, ask the customer what they'd like to do next.
Work with Tree
The metadata tree represents database schemas hierarchically. It contains two kinds of elements:
Objects — actual database objects (tables, functions, views, sequences, indexes) that have SQL definitions
Categories — virtual grouping containers ("Schemas", "Tables", "Functions") that organize objects for navigation but have no SQL definitions
The tree uses on-demand loading — metadata is retrieved from the database only when imported. See Navigating the metadata model for full details.
Navigation uses two APIs:
describe-metadata-model-children— returns the children of a given node, each with its ownSelectionRulesfor drilling deeperdescribe-metadata-model— returns the name, type, and SQL definition of a specific object
Both require --origin SOURCE or --origin TARGET and accept only explicit selection rules.
Show tree root: Call
describe-metadata-model-childrenwith selection rules targeting the root level and--origin SOURCE. If the tree is empty, automatically run a metadata import (same as Auto Import) and then re-display the tree root.Navigate: Each child in the response has
MetadataModelNameandSelectionRules. Present the children and ask the customer what to do:Show children — drill into a child by calling
describe-metadata-model-childrenwith the child'sSelectionRulesas the--selection-rulesparameterShow definition — display the DDL for the selected object (see step 3). Only available for objects, not categories.
Go up — return to the parent node
Exit tree — return to actions menu
Show definition: Call
describe-metadata-modelwith the child'sSelectionRulesand--origin SOURCE. The response includesDefinition(SOURCE DDL) andTargetMetadataModels(list of converted counterparts with their ownSelectionRules). To get the TARGET DDL, calldescribe-metadata-modelagain withSelectionRulesfromTargetMetadataModels[0]and--origin TARGET. Present both clearly labeled as SOURCE and TARGET.Refresh from database: If the customer asks to refresh, run
start-metadata-model-importwith selection rules scoped to the current tree position,--origin SOURCE --refresh. ExtractRequestIdentifier. Wait viaaws dms wait metadata-model-imported --migration-project-identifier <id> --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'. After refresh completes, re-display the current node's children.
After completing, ask the customer what they'd like to do next.
Convert Statement
Restriction: This feature is only available for SQL Server → PostgreSQL/Aurora PostgreSQL migration projects. Do NOT offer or show this option for any other source/target engine combination.
Determine context: Navigate the metadata tree to find the target location. For SQL Server this is server → database → schema; for other engines it's server → schema. Use
describe-metadata-model-childrento drill into nodes until you reach the schema level. Let the customer pick the schema (or database + schema for SQL Server). If the tree is empty, ask the customer to provide the location manually.Get the SQL statement: Ask the customer for the SQL statement they want to convert.
Build selection rules for the schema: Build selection rules targeting the schema location. See Selection rules in DMS Schema Conversion for format and vendor-specific locators.
Create metadata model: Generate a unique model name (e.g.,
statement-<timestamp>). Callstart-metadata-model-creationwith:--selection-rules— the schema selection rules from step 3--metadata-model-name— the generated model name--properties '{"StatementProperties": {"Definition": "<sql_statement>"}}'
Extract
RequestIdentifierfrom the response. Wait viaaws dms wait metadata-model-created --migration-project-identifier <id> --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'.Build selection rules for the statement: Build selection rules targeting the specific statement. See Selection rules in DMS Schema Conversion — use
statement-nameset to the model name.Convert the created model: Call
start-metadata-model-conversionwith the statement selection rules from step 5. ExtractRequestIdentifier. Wait viaaws dms wait metadata-model-converted --migration-project-identifier <id> --filter 'Name=schema-conversion-operation-id,Values=<RequestIdentifier>'.Show converted result: Call
describe-metadata-modelwith the statement selection rules from step 5 and--origin SOURCE. From the response, extractTargetMetadataModels[0].SelectionRules. Then calldescribe-metadata-modelwith those target selection rules and--origin TARGET. Present the converted SQL from theDefinitionfield clearly to the customer.Export conversion assessment report: Call
export-metadata-model-assessmentwith the source selection rules from step 5. Provide the customer with S3 links for PDF and CSV reports.
After completing, ask the customer what they'd like to do next.
Database Statistics
When a customer asks about their source database statistics — such as the number of objects, object types, schema sizes, or a general overview — run an assessment and present the results as a concise summary.
Build selection rules based on the customer's scope. If they specify particular schemas or objects, scope accordingly. If no scope is specified, default to all schemas on the source server (wildcard
%). See Selection rules in DMS Schema Conversion for JSON format.Run assessment: Call
start-metadata-model-assessmentwith the migration project and selection rules. See schema-conversion-operations.md for execution details.Wait for completion using the DMS waiter or fallback polling as described in schema-conversion-operations.md.
Export conversion assessment report: Call
export-metadata-model-assessmentwith the same selection rules.Download and present only what the customer asked for: Download the Summary CSV from S3:
aws s3 cp s3://<bucket>/<CsvReport.S3ObjectKey> ./Summary.csvThe report contains many data points. Present only the information the customer requested — do not dump the entire report. For example:
If they asked "how many tables?" → show only the table count
If they asked about a specific schema → show only that schema's stats
Offer next steps: Ask if they'd like to see conversion complexity or proceed with conversion.
Constraints:
If the customer specifies a scope, use it. If not, default to all schemas.
Present only what the customer asked for — do not overwhelm with unrequested data.
Present statistics in a clear, tabular format.
After completing, ask the customer what they'd like to do next.
Clean Up
Delete the migration project and its associated DMS resources. Resources MUST be deleted in dependency order.
Confirm with customer: List the resources that will be deleted and ask for confirmation:
aws dms describe-migration-projects --filter Name=migration-project-identifier,Values=<migration_project_identifier>Show the project name, source/target data providers, and instance profile.
Delete migration project:
aws dms delete-migration-project \ --migration-project-identifier <migration_project_identifier>Delete data providers: Delete both source and target data providers:
aws dms delete-data-provider \ --data-provider-identifier <source_data_provider_identifier> aws dms delete-data-provider \ --data-provider-identifier <target_data_provider_identifier>Delete instance profile:
aws dms delete-instance-profile \ --instance-profile-identifier <instance_profile_identifier>Delete subnet group:
aws dms delete-replication-subnet-group \ --replication-subnet-group-identifier <subnet_group_identifier>Confirm completion: Inform the customer that all DMS Schema Conversion resources have been removed.
Constraints:
You MUST get explicit customer confirmation before deleting any resources.
You MUST delete in order: migration project first, then data providers, then instance profile, then subnet group — deleting in the wrong order will fail due to dependencies.
You MUST NOT delete the underlying infrastructure (VPC, subnets, security groups, RDS instances, Secrets Manager secrets) — those are outside the scope of DMS Schema Conversion cleanup.
After completing, ask the customer what they'd like to do next.
Cancel Awareness
During any running async operation, if the customer requests cancellation, refer to cancel-operations.md for the correct cancel command mapping.
Security Considerations
Credentials: All database credentials are stored in AWS Secrets Manager. Never embed credentials in data provider settings or log them to output.
Encryption at rest: S3 buckets use SSE-S3 encryption (default). SSE-KMS is not supported by DMS Schema Conversion.
Encryption in transit: Online connections should use
requireor stronger SSL mode.noneshould only be used in isolated test environments.IAM least-privilege: All IAM roles use confused-deputy condition keys (
aws:SourceAccount,aws:SourceArn) and scoped resource ARNs.Network access: DMS instance profiles operate within VPC subnets with security group restrictions.
See DMS security best practices for additional guidance.
Error Handling
When any operation fails or returns an error, load troubleshooting.md and follow its guidance to diagnose and resolve the issue. Explain the error to the customer in plain language and offer options: retry, try a different action, or exit.
Files
- ATTRIBUTION.mdAdded by AutoGineer949 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer67 B
- SKILL.md24.5 KiB
- references/action-items.md8.6 KiB
- references/cancel-operations.md1.6 KiB
- references/schema-conversion-operations.md6.6 KiB
- references/setup-wizard.md38.1 KiB
- references/troubleshooting.md15.2 KiB
references/troubleshooting.md
DMS Schema Conversion: Troubleshooting
Table of Contents
Sync Exceptions
Async Exceptions
Outdated AWS CLI Version
Verify Connectivity
DDL Processing Statistics (Offline Source)
Sync Exceptions
These errors are returned immediately by the API call itself (start-*, create-*, describe-*). Surface the error to the customer and apply the fix before retrying.
| Error | Returned by | Likely cause | Fix |
|---|---|---|---|
AccessDeniedFault | Any call | Caller lacks IAM permissions | Check the IAM role or user has the required DMS, S3, or Secrets Manager permissions |
ResourceNotFoundFault | Any call | Referenced resource does not exist | Verify the migration project, instance profile, or data provider ARN/name is correct |
ResourceAlreadyExistsFault | create-* calls | Resource with this name already exists | Retrieve the existing resource ARN with the appropriate describe-* call and reuse it |
ResourceQuotaExceededFault | create-* / start-* calls | Account quota exceeded | Check Service Quotas console and request an increase for the relevant DMS resource |
KMSKeyNotAccessibleFault | start-* calls | DMS cannot access the KMS key | Check the KMS key policy allows the DMS service principal for the region |
S3AccessDeniedFault | start-* calls | DMS cannot access the S3 bucket | Verify the S3 role trust policy includes dms.<region>.amazonaws.com and the bucket policy does not block DMS |
S3ResourceNotFoundFault | start-* calls | S3 bucket does not exist | Validate: aws s3api head-bucket --bucket <bucket_name> — offer to create if missing |
InvalidSubnet | create-replication-subnet-group | Subnets not in at least 2 AZs or wrong VPC | Re-run Phase 4b of the setup wizard with corrected subnet IDs |
EntityAlreadyExists | IAM create-role / create-policy | IAM resource already exists | Retrieve existing ARN: aws iam get-role --role-name <name> or aws iam get-policy --policy-arn <arn> |
ResourceExistsException | secretsmanager create-secret | Secret already exists | Retrieve existing ARN: aws secretsmanager describe-secret --secret-id <name> |
Async Exceptions
These errors do not fail the initial API call. The operation starts successfully but later transitions to a failed status, visible when checking the corresponding describe-* command (see schema-conversion-operations.md for the full list).
Step 1 — Retrieve the error message
Use the corresponding describe-* command for the operation that failed (e.g., describe-metadata-model-imports, describe-metadata-model-conversions, describe-metadata-model-assessments, describe-metadata-model-creations, describe-metadata-model-exports-as-script). Extract ErrorDetails.defaultErrorDetails.message and match it to a group below.
Group 1 — Database Credentials
Messages:
The credentials in the secret SOURCE are not valid. Check your username and password and try again.The credentials in the secret TARGET are not valid. Check your username and password and try again.The credentials in the secret are not valid. Check your username and password and try again.
Fix:
Inform the customer:
"The credentials stored in your Secrets Manager secret are not valid. Please verify the username and password for your source/target database and update the secret value if needed."
Show the customer the secret name to check (retrieve from the migration project, do NOT display the secret value):
aws dms describe-migration-projects \ --filters Name=migration-project-identifier,Values=<migration_project_identifier>Once the customer confirms the secret has been updated, proceed to Step 2.
Group 2 — Database Connectivity
Messages:
Could not connect to the source database. Please verify your network configuration, server name, and port, then try again.Could not connect to the target database. Please verify your network configuration, server name, and port, then try again.Could not connect to the database. Please verify your network configuration, server name, and port, then try again.The DB connection has not been established. For details, see the log.
Fix:
Verify the server name and port in the data provider:
aws dms describe-data-providers \ --filters Name=data-provider-identifier,Values=<project_name>-sourceCheck security group egress rules — see Verify Connectivity.
Confirm the database is running and reachable from the configured subnets.
Group 3 — Database Not Found
Messages:
The specified source database name was not found. Check your database name and try again.The specified target database name was not found. Check your database name and try again.
Fix:
Retrieve the database name currently configured in the data provider and show it to the customer:
aws dms describe-data-providers \ --filters Name=data-provider-identifier,Values=<project_name>-sourceExtract and display the
DatabaseNamefrom the settings so the customer can see what name DMS is using.Ask the customer to confirm whether this database name exists on the server.
If the name is wrong, update the data provider:
aws dms modify-data-provider \ --data-provider-identifier <arn> \ --engine <engine> \ --settings '{...corrected settings...}'
Group 4 — S3 Access and Configuration
Messages:
Access to the project storage is denied. Check you bucket, S3 role and try again.Access to project storage denied. Check your S3 bucket, role, region, and try again.Unable to access to S3. Check the name of your S3 bucket, the IAM role to access your bucket, and the Region, then try again.S3 settings are not valid. Check the name of your S3 bucket, the IAM role to access your bucket, and the Region, then try again.The export metadata error happened during publishing to S3. Check your bucket, S3 role and restart operation.The read metadata error happened during reading from S3.S3 bucket url with the selected project was not found. Please close and open your project again.
Fix:
Retrieve the S3 bucket path and S3 role ARN from the migration project and display them to the customer:
aws dms describe-migration-projects \ --filters Name=migration-project-identifier,Values=<migration_project_identifier>Extract and show
SchemaConversionApplicationAttributes.S3BucketPathandSchemaConversionApplicationAttributes.S3BucketRoleArn.Validate the bucket exists:
aws s3api head-bucket --bucket <bucket_name>Verify the S3 role trust policy includes
dms.<region>.amazonaws.com:aws iam get-role --role-name <s3_role_name>Verify the S3 role has the required permissions (
s3:PutObject,s3:GetObject,s3:GetObjectVersion,s3:GetBucketVersioning,s3:GetBucketLocation,s3:ListBucket) on the bucket:aws iam list-attached-role-policies --role-name <s3_role_name>Check the bucket policy does not explicitly deny DMS access:
aws s3api get-bucket-policy --bucket <bucket_name>
Group 5 — S3 Versioning
Message:
S3 bucket versioning is disabled. Please turn it on and try again.
Fix:
Retrieve the S3 bucket name from the migration project:
aws dms describe-migration-projects \ --filters Name=migration-project-identifier,Values=<migration_project_identifier>Extract
SchemaConversionApplicationAttributes.S3BucketPathand display it to the customer.Enable versioning on the bucket:
aws s3api put-bucket-versioning \ --bucket <bucket_name> \ --versioning-configuration Status=Enabled
Group 6 — Secrets Manager Access
Messages:
The Secret does not exist. Please check the Secret name, IAM secret role, and region.DMS Schema Conversion is unable to process the request at this time because data from Secrets Manager is not available. Please check your network configuration and try again.Unable to access AWS Secrets Manager: <details>
Fix:
Retrieve the secret ARNs and secrets role ARN from the migration project and display them to the customer:
aws dms describe-migration-projects \ --filters Name=migration-project-identifier,Values=<migration_project_identifier>Extract and show
SecretsManagerSecretIdfrom both source and target data provider descriptors, andSecretsManagerAccessRoleArn.Verify each secret exists:
aws secretsmanager describe-secret --secret-id <secret_arn>Verify the secrets role trust policy includes
dms.<region>.amazonaws.com:aws iam get-role --role-name <secrets_role_name>Verify the secrets role has
secretsmanager:GetSecretValueandsecretsmanager:DescribeSecreton the secret ARNs:aws iam list-attached-role-policies --role-name <secrets_role_name>If the message mentions network unavailability, check that the DMS subnets have outbound access to Secrets Manager (via NAT gateway or VPC endpoint).
Group 7 — SSL / Certificate
Message:
Verify that your database has SSL configured and doesn't provide self-signed certificates (certificates that were signed by an unknown Certificate Authority). By default, SSL isn't configured in your database.
Fix:
If SSL is not required, update the data provider to set
SslMode: none.If SSL is required, ensure the database uses a certificate signed by a trusted CA.
Update the data provider settings accordingly.
Group 8 — Insufficient Database Privileges
Message:
The specified account does not have sufficient privileges for working with one or several objects.
Fix:
The database user does not have enough permissions to perform the requested operation.
Guide the customer to set up the correct database credentials based on:
For source databases: source data provider prerequisites
For target databases: target data provider prerequisites
Update the secret if the user needs to be changed.
Group 9 — Project / Configuration Issues
Messages:
DMS Schema Conversion cannot open the project because it is already opened.The wrong project was selected for opening. Please verify the project identifier and try again.The Schema Conversion Application Attributes were not provided. Please add the required data to the Migration Project and try again.The project settings format is not valid. Please modify the field value and try again.DMS Schema Conversion cannot create the project because it already exists.DMS Schema Conversion cannot process your request because the Conversion does not exist.
Fix:
Verify the migration project identifier is correct:
aws dms describe-migration-projects \ --filters Name=migration-project-identifier,Values=<migration_project_identifier>Check that
SchemaConversionApplicationAttributes(S3 bucket path and S3 role ARN) are set on the project.If the project configuration is incomplete or corrupted, recreate it via the setup wizard with the same or a new project name.
Group 10 — Capacity / Transient Errors
Messages:
Capacity is unavailable at this time. Please try again later.DMS Schema Conversion cannot process your request. Please try again later or contact the support team.The service is currently experiencing high load. Please try your request again later.
Fix: These are transient errors. Wait 5 minutes and retry the operation.
Step 2 — Retry
After the customer confirms the fix, ask:
"Would you like to retry the operation? (yes / no)"
If yes, return to the appropriate action. If no, return to the Actions Menu.
Group 8 — Offline Source Import Failure (Unexpected application error)
Messages:
Unexpected application error.
Context: This generic error occurs specifically during start-metadata-model-import for offline source data providers. The most common cause is a DatabaseName mismatch between the data provider settings and the DDL script content.
Fix:
Retrieve the data provider settings and extract the configured
DatabaseName:aws dms describe-data-providers \ --filters Name=data-provider-identifier,Values=<project_name>-sourceShow the customer the
DatabaseNamevalue fromSettings.MicrosoftSqlServerSettings.DatabaseName.Download one DDL script from S3 and check the actual database name:
aws s3 cp <S3Path><first_file.sql> - | head -5Look for
USE [<name>]orCREATE DATABASE [<name>]. Do not log or persist this output — DDL content may contain sensitive schema information. Use it only transiently to extract the database name.If the configured
DatabaseNamedoes not match the database name in the DDL scripts, modify the data provider with the correctedDatabaseName. Keep all other settings (ServerName, Port, SslMode, S3Path, S3AccessRoleArn) unchanged from the describe output.If
DatabaseNamewas already correct, check DDL processing statistics in the S3 artifacts bucket:aws s3 cp s3://<artifacts_bucket>/<project_name>-migration-project/ddl-statistics/ds.csv -Look for files with
FAILEDstatus in the CSV — these indicate individual DDL parsing errors.Retry the import after the fix.
Outdated AWS CLI Version
If a DMS command fails with Invalid choice or argument operation: Invalid choice, the installed AWS CLI version does not support the operation.
Fix:
Check the current version:
aws --versionUpdate to the latest version following the AWS CLI installation guide.
Verify the operation is now available:
aws dms <operation> help
Verify Connectivity
If the error indicates a network or connectivity issue, read DMS SC network configuration and guide the customer through setting up the correct network configuration.
DDL Processing Statistics (Offline Source)
For offline source projects, DMS produces processing statistics in the project's S3 bucket after import, conversion, or assessment operations. Check these statistics proactively when results contain fewer objects than expected or when an operation completes without errors but the metadata tree appears incomplete.
Retrieve the statistics:
aws s3 cp s3://<project-bucket>/<migration-project-folder>/ddl-statistics/ds.csv ./ds.csvReview the output for entries indicating processing failures. Common causes: malformed DDL, unsupported statements (DML/DROP), encoding issues, or non-compliant file structure. Refer to Phase 3d of the setup wizard for DDL structure requirements.
Requirements and compatibility
Written for: Claude Code
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.
Needs: Names Claude Code tools, Needs an MCP server, Needs a command-line tool, Needs Node.js
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
- Published by
- AWS
- Publisher
- AWS (Official)
- Source
- aws/agent-toolkit-for-aws · skills/specialized-skills/migration-and-modernization-skills/dms-schema-conversion · commit 0a218f8
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- NOTICE (added by AutoGineer from NOTICE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by AWS.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download dms-schema-conversion.zip