diff --git a/extensions/sql-migration/images/newSupportRequest.svg b/extensions/sql-migration/images/newSupportRequest.svg
new file mode 100644
index 0000000000..f930b047c8
--- /dev/null
+++ b/extensions/sql-migration/images/newSupportRequest.svg
@@ -0,0 +1,4 @@
+
diff --git a/extensions/sql-migration/package.json b/extensions/sql-migration/package.json
index 6dc9c0c78f..445302dc3d 100644
--- a/extensions/sql-migration/package.json
+++ b/extensions/sql-migration/package.json
@@ -15,6 +15,7 @@
"activationEvents": [
"onDashboardOpen",
"onCommand:sqlmigration.start",
+ "onCommand:sqlmigration.newsupportrequest",
"onCommand:sqlmigration.sendfeedback",
"onCommand:sqlmigration.openNotebooks"
],
@@ -34,6 +35,12 @@
"category": "%migration-command-category%",
"icon": "./images/migration.svg"
},
+ {
+ "command": "sqlmigration.newsupportrequest",
+ "title": "%new-support-request-command%",
+ "category": "%migration-command-category%",
+ "icon": "./images/newSupportRequest.svg"
+ },
{
"command": "sqlmigration.sendfeedback",
"title": "%send-feedback-command%",
@@ -78,6 +85,10 @@
],
"menu": {
"commandPalette": [
+ {
+ "command": "sqlmigration.newsupportrequest",
+ "when": "false"
+ },
{
"command": "sqlmigration.sendfeedback",
"when": "false"
@@ -128,6 +139,7 @@
"widget": {
"tasks-widget": [
"sqlmigration.start",
+ "sqlmigration.newsupportrequest",
"sqlmigration.sendfeedback"
]
}
diff --git a/extensions/sql-migration/package.nls.json b/extensions/sql-migration/package.nls.json
index 48c3fb883a..45a98c082c 100644
--- a/extensions/sql-migration/package.nls.json
+++ b/extensions/sql-migration/package.nls.json
@@ -7,6 +7,7 @@
"migration-command-category": "Azure SQL Migration",
"start-migration-command": "Migrate to Azure SQL",
"send-feedback-command": "Feedback",
+ "new-support-request-command": "New support request",
"migration-context-menu-category": "Migration Context Menu",
"complete-cutover-menu": "Complete cutover",
"database-details-menu": "Database details",
diff --git a/extensions/sql-migration/src/constants/iconPathHelper.ts b/extensions/sql-migration/src/constants/iconPathHelper.ts
index 2f5899cb0c..879c692e1b 100644
--- a/extensions/sql-migration/src/constants/iconPathHelper.ts
+++ b/extensions/sql-migration/src/constants/iconPathHelper.ts
@@ -34,6 +34,7 @@ export class IconPathHelper {
public static completingCutover: IconPath;
public static migrationService: IconPath;
public static sendFeedback: IconPath;
+ public static newSupportRequest: IconPath;
public static setExtensionContext(context: vscode.ExtensionContext) {
IconPathHelper.copy = {
@@ -128,5 +129,9 @@ export class IconPathHelper {
light: context.asAbsolutePath('images/sendFeedback.svg'),
dark: context.asAbsolutePath('images/sendFeedback.svg')
};
+ IconPathHelper.newSupportRequest = {
+ light: context.asAbsolutePath('images/newSupportRequest.svg'),
+ dark: context.asAbsolutePath('images/newSupportRequest.svg')
+ };
}
}
diff --git a/extensions/sql-migration/src/constants/strings.ts b/extensions/sql-migration/src/constants/strings.ts
index 15bce1a99a..675748a645 100644
--- a/extensions/sql-migration/src/constants/strings.ts
+++ b/extensions/sql-migration/src/constants/strings.ts
@@ -271,7 +271,7 @@ export const AZURE_SQL = localize('sql.migration.azure.sql', "Azure SQL");
export const CLOSE = localize('sql.migration.close', "Close");
export const DATA_UPLOADED = localize('sql.migraiton.data.uploaded.size', "Data Uploaded/Size");
export const COPY_THROUGHPUT = localize('sql.migration.copy.throughput', "Copy Throughput (MBPS)");
-
+export const NEW_SUPPORT_REQUEST = localize('sql.migration.newsupportrequest', "New support request");
//Summary Page
export const SUMMARY_PAGE_TITLE = localize('sql.migration.summary.page.title', "Summary");
diff --git a/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts b/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts
index c4e9543870..7ae11f0237 100644
--- a/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts
+++ b/extensions/sql-migration/src/dialog/migrationCutover/migrationCutoverDialog.ts
@@ -28,6 +28,7 @@ export class MigrationCutoverDialog {
private _cancelButton!: azdata.ButtonComponent;
private _refreshLoader!: azdata.LoadingComponent;
private _copyDatabaseMigrationDetails!: azdata.ButtonComponent;
+ private _newSupportRequest!: azdata.ButtonComponent;
private _sourceDatabaseInfoField!: InfoFieldSchema;
private _sourceDetailsInfoField!: InfoFieldSchema;
@@ -325,6 +326,29 @@ export class MigrationCutoverDialog {
}
});
+ // create new support request button. Hiding button until sql migration support has been setup.
+ this._newSupportRequest = this._view.modelBuilder.button().withProps({
+ label: loc.NEW_SUPPORT_REQUEST,
+ iconPath: IconPathHelper.newSupportRequest,
+ iconHeight: '16px',
+ iconWidth: '16px',
+ height: '20px',
+ width: '140px',
+ }).component();
+
+ this._newSupportRequest.onDidClick(async (e) => {
+ const serviceId = this._model._migration.controller.id;
+ const supportUrl = `https://portal.azure.com/#resource${serviceId}/supportrequest`;
+ await vscode.env.openExternal(vscode.Uri.parse(supportUrl));
+ });
+
+ headerActions.addItem(this._newSupportRequest, {
+ flex: '0',
+ CSSStyles: {
+ 'margin-left': '5px'
+ }
+ });
+
this._refreshLoader = this._view.modelBuilder.loadingComponent().withProps({
loading: false,
height: '15px'
diff --git a/extensions/sql-migration/src/main.ts b/extensions/sql-migration/src/main.ts
index b7953e148d..2824bd6a44 100644
--- a/extensions/sql-migration/src/main.ts
+++ b/extensions/sql-migration/src/main.ts
@@ -57,6 +57,9 @@ class SQLMigration {
azdata.tasks.registerTask('sqlmigration.start', async () => {
await this.launchMigrationWizard();
}),
+ azdata.tasks.registerTask('sqlmigration.newsupportrequest', async () => {
+ await this.launchNewSupportRequest();
+ }),
azdata.tasks.registerTask('sqlmigration.sendfeedback', async () => {
const actionId = 'workbench.action.openIssueReporter';
const args = {
@@ -85,6 +88,11 @@ class SQLMigration {
await wizardController.openWizard(connectionId);
}
+ async launchNewSupportRequest(): Promise {
+ await vscode.env.openExternal(vscode.Uri.parse(
+ `https://portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/newsupportrequest`));
+ }
+
stop(): void {
}