diff --git a/README.md b/README.md
index 4184035e4776fb347c5c0afb8d9a0d25a6e542ea..428481eb4b0d30b949cf41d17331633ffbd087fc 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,3 @@
-
 Deadlock Theia projet basé sur notre propre image de Theia https://git.e-biz.fr/deadlock-public/theia.
 Plusieurs éléments ajoutés à l'image de base :
 
diff --git a/deadlock-plugins/deadlock-extension/README.md b/deadlock-plugins/deadlock-extension/README.md
index f7d2e1b85ce1f3b10df28f5cf763b12d01190543..c24101e2f3ea48b3dbe46de58278e86a648bc763 100644
--- a/deadlock-plugins/deadlock-extension/README.md
+++ b/deadlock-plugins/deadlock-extension/README.md
@@ -2,14 +2,14 @@
 
 Vscode extension to show a panel with :
 
--   adresses availables for the current challenge pulled from `/home/config/user-challenge.json`
--   challenge instruction pulled from the `README.md`
+- adresses availables for the current challenge pulled from `/home/config/user-challenge.json`
+- challenge instruction pulled from the `README.md`
 
 ## Quick start
 
--   Run `setup-dev-env.sh` to mock challenge configuration
--   Run `install.sh`
--   Run `build.sh`
--   Press `F5` (or use `Run and Debug` tab).
+- Run `setup-dev-env.sh` to mock challenge configuration
+- Run `install.sh`
+- Run `build.sh`
+- Press `F5` (or use `Run and Debug` tab).
 
 If something goes wrong, you may need to kill watch Task terminal between restarts.
diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts
index 6fd9cdfbe306c5ed9b906234b1efb97cf88eec43..e7a7ee088ab0c7071da97f5d07fcabce329a3475 100644
--- a/deadlock-plugins/deadlock-extension/src/core/controller.ts
+++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts
@@ -1,9 +1,45 @@
+import { link } from 'fs';
+import { url } from 'inspector';
 import * as vscode from 'vscode';
+import { OPEN_GETTING_STARTED_COMMAND } from '../theia/command';
+import { CHOOSE_MISSION_WORKDIR_COMMAND } from './commandHandler';
+import ExtensionStore from './extensionStore';
+import KeycloakOAuth2DeviceFlowConnection from './keycloakOAuth2DeviceFlowConnection';
 
 export default class Controller {
-	static launchMission(missionId: string | null) {
+	private connection: KeycloakOAuth2DeviceFlowConnection;
+
+	constructor() {
+		this.connection = new KeycloakOAuth2DeviceFlowConnection(
+			'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device',
+			'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token',
+		);
+	}
+
+	openBrowserWithUrl(url: string) {
+		vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(url));
+	}
+
+	async launchMission(missionId: string | null) {
 		if (missionId) {
 			vscode.window.showInformationMessage(`vous lancez la mission ${missionId}`);
+			const extensionStore = ExtensionStore.getInstance();
+			const hadMissionWorkdir = extensionStore.getMissionWorkdir() !== undefined;
+			if (!hadMissionWorkdir) {
+				await vscode.commands.executeCommand(CHOOSE_MISSION_WORKDIR_COMMAND.cmd);
+			}
+
+			const isConnected = (await extensionStore.getAccessToken()) !== undefined;
+			console.log('accesToke: ' + extensionStore.getAccessToken());
+
+			//TODO: Connection
+			if (!isConnected) {
+				const { accessToken, refreshToken } = await this.connection.getToken({ openLink: this.openBrowserWithUrl });
+				console.log('VOICI LES TOKENS');
+				console.log(accessToken, refreshToken);
+			}
+
+			vscode.commands.executeCommand(OPEN_GETTING_STARTED_COMMAND.cmd);
 		}
 	}
 }
diff --git a/deadlock-plugins/deadlock-extension/src/extension.ts b/deadlock-plugins/deadlock-extension/src/extension.ts
index d3a60e232bb2775d5d85cb732585bca80067dd7e..9d98f414a37916fdcd5457414cedff126a23accb 100644
--- a/deadlock-plugins/deadlock-extension/src/extension.ts
+++ b/deadlock-plugins/deadlock-extension/src/extension.ts
@@ -28,8 +28,7 @@ export const userConfig = new UserConfigTheia();
 export async function activate(context: vscode.ExtensionContext) {
 	vscode.window.showInformationMessage('Bienvenue sur Deadlock!');
 	ExtensionStore.createInstance(context);
-
-	new KeycloakOAuth2DeviceFlowConnectionTest().run();
+	const controller = new Controller();
 
 	vscode.window.registerUriHandler({
 		handleUri(uri: vscode.Uri) {
@@ -38,7 +37,7 @@ export async function activate(context: vscode.ExtensionContext) {
 
 			switch (action) {
 				case 'open-challenge':
-					Controller.launchMission(queryParams.get('missionId'));
+					controller.launchMission(queryParams.get('missionId'));
 					break;
 
 				default:
@@ -50,23 +49,16 @@ export async function activate(context: vscode.ExtensionContext) {
 	initViews(context.extensionUri);
 	initCommandHandlers();
 
-	await vscode.commands.executeCommand(OPEN_BRIEFING_COMMAND.cmd);
-
 	// @ts-ignore
 	const deadlockPanelProvider = new DepNodeProvider(vscode.workspace.rootPath);
 	vscode.window.registerTreeDataProvider('deadlockPanel', deadlockPanelProvider);
 
-	new keycloakOAuth2DeviceFlowConnectionTest().run();
-
 	try {
 		await userConfig.init();
-		vscode.commands.executeCommand('setContext', 'user.authenticated', false);
 	} catch (e) {
 		error('Cannot init userConfig');
 	}
 
-	await vscode.commands.executeCommand(OPEN_BRIEFING_COMMAND.cmd);
-
 	MetadataProvider.loadPathsToEnvVariables();
 	MetadataProvider.loadPathsToJson(`${SERVICES_PATHS_PATH}`);
 }