diff --git a/src/AddSIPAccountVC.h b/src/AddSIPAccountVC.h
index 402b4abc4e88182c29223c34be1f0c0b6a68dd3b..11a4fae3c3033d4da5084effa0d60552242455c6 100644
--- a/src/AddSIPAccountVC.h
+++ b/src/AddSIPAccountVC.h
@@ -19,9 +19,10 @@
 
 #import <Cocoa/Cocoa.h>
 #import "LrcModelsProtocol.h"
+#include <qstring.h>
 
 @protocol AddSIPAccountDelegate <NSObject>
-- (void)completedWithSuccess:(BOOL)success;
+- (void)completedWithSuccess:(BOOL)success accountId:(const QString &)accountId;
 - (void)showView:(NSView*)view;
 @end
 
diff --git a/src/AddSIPAccountVC.mm b/src/AddSIPAccountVC.mm
index 6747664091ed81c155bc0dbc80a303e864365a96..447d718309446aedca319b212ab8e651c407bf80 100644
--- a/src/AddSIPAccountVC.mm
+++ b/src/AddSIPAccountVC.mm
@@ -72,7 +72,7 @@ NSTimer* timeoutTimer;
 
 - (IBAction)cancel:(id)sender
 {
-    [self.delegate completedWithSuccess: NO];
+    [self.delegate completedWithSuccess: NO accountId:""];
 }
 
 - (IBAction)addAccount:(id)sender
@@ -101,7 +101,7 @@ NSTimer* timeoutTimer;
                                           }
                                           self.accountModel->setAccountConfig(accountID, accountProperties);
                                           QObject::disconnect(accountCreated);
-                                          [self.delegate completedWithSuccess: YES];
+                                          [self.delegate completedWithSuccess: YES accountId: accountID];
                                       });
     accountToCreate = self.accountModel->createNewAccount(lrc::api::profile::Type::SIP, QString::fromNSString(displayName), "", "", "", QString::fromNSString(userNameField.stringValue));
 
@@ -113,7 +113,7 @@ NSTimer* timeoutTimer;
 
 -(void) addingAccountTimeout {
     QObject::disconnect(accountCreated);
-    [self.delegate completedWithSuccess: YES];
+    [self.delegate completedWithSuccess: YES accountId: accountToCreate];
 }
 
 
diff --git a/src/ConnectToAccManagerVC.h b/src/ConnectToAccManagerVC.h
index 35657f8327f248f2887f0483e6c93c9238165775..f2a1eff42809fbfc3ff3980371e76f25cf86f631 100644
--- a/src/ConnectToAccManagerVC.h
+++ b/src/ConnectToAccManagerVC.h
@@ -19,9 +19,10 @@
 
 #import <Cocoa/Cocoa.h>
 #import "LrcModelsProtocol.h"
+#include <qstring.h>
 
 @protocol RingWizardAccManagerDelegate <NSObject>
-- (void)didSignInSuccess:(BOOL)success;
+- (void)didSignInSuccess:(BOOL)success accountId:(const QString &)accountId;
 - (void)showView:(NSView*)view;
 @end
 
diff --git a/src/ConnectToAccManagerVC.mm b/src/ConnectToAccManagerVC.mm
index 885936eb0797eaca6aea5891b95753e556a32d0a..db4ad55460b0b6dfe786fc5175974a2dd317c19e 100644
--- a/src/ConnectToAccManagerVC.mm
+++ b/src/ConnectToAccManagerVC.mm
@@ -78,7 +78,7 @@ QString accointId;
 
 - (IBAction)dismissViewWithError:(id)sender
 {
-    [self.delegate didSignInSuccess:NO];
+    [self.delegate didSignInSuccess:NO accountId:""];
 }
 
 - (IBAction)startAgain:(id)sender
@@ -97,7 +97,7 @@ QString accointId;
                                           if(accountID.compare(accointId) != 0) {
                                               return;
                                           }
-                                          [self.delegate didSignInSuccess:YES];
+                                          [self.delegate didSignInSuccess:YES accountId: accointId];
                                           lrc::api::account::ConfProperties_t accountProperties = self.accountModel->getAccountConfig(accountID);
                                           accountProperties.Ringtone.ringtonePath = QString::fromNSString(defaultRingtonePath());
                                           self.accountModel->setAccountConfig(accountID, accountProperties);
diff --git a/src/RingWindowController.mm b/src/RingWindowController.mm
index cc4fd3a618fdfafc41308e97217c3db20694f11c..5bcb0041f0859cf0a1ddfa2720c1b6f2c4bcb8d3 100644
--- a/src/RingWindowController.mm
+++ b/src/RingWindowController.mm
@@ -57,7 +57,7 @@ typedef NS_ENUM(NSInteger, ViewState) {
     LEAVE_MESSAGE,
 };
 
-@interface RingWindowController () <MigrateRingAccountsDelegate>
+@interface RingWindowController () <MigrateRingAccountsDelegate, AccountCreationDelegate>
 
 @property (retain) MigrateRingAccountsWC* migrateWC;
 @property RingWizardWC* wizard;
@@ -630,10 +630,21 @@ typedef NS_ENUM(NSInteger, ViewState) {
 - (void) createNewAccount {
     [self changeViewTo:SHOW_WELCOME_SCREEN];
     wizard = [[RingWizardWC alloc] initWithNibName:@"RingWizard" bundle: nil accountmodel: self.accountModel];
+    wizard.delegate = self;
     [wizard showChooseWithCancelButton: YES];
     [self.window beginSheet:wizard.window completionHandler:nil];
 }
 
+- (void)accountCreated:(QString)accountId {
+    [chooseAccountVC selectAccount: accountId.toNSString()];
+    [settingsVC setSelectedAccount: accountId];
+    auto& accInfo = self.accountModel->getAccountInfo(accountId);
+    [smartViewVC setConversationModel:accInfo.conversationModel.get()];
+    [smartViewVC selectConversationList];
+    [self updateRingID];
+    [self changeViewTo:SHOW_WELCOME_SCREEN];
+}
+
 - (NSRect)window:(NSWindow *)window willPositionSheet:(NSWindow *)sheet
        usingRect:(NSRect)rect
 {
diff --git a/src/RingWizardLinkAccountVC.h b/src/RingWizardLinkAccountVC.h
index ed5fd21f26b7e0b08326edafa67b2022574262be..c881d5763ae6e31eefccae0f3cf6447cdbbd27d8 100644
--- a/src/RingWizardLinkAccountVC.h
+++ b/src/RingWizardLinkAccountVC.h
@@ -19,9 +19,10 @@
 
 #import <Cocoa/Cocoa.h>
 #import "LrcModelsProtocol.h"
+#import <qstring.h>
 
 @protocol RingWizardLinkDelegate <NSObject>
-- (void)didLinkAccountWithSuccess:(BOOL)success;
+- (void)didLinkAccountWithSuccess:(BOOL)success accountId:(const QString&)accountId;
 - (void)showView:(NSView*)view;
 @end
 
diff --git a/src/RingWizardLinkAccountVC.mm b/src/RingWizardLinkAccountVC.mm
index 6ba7309d7d7037826c40e84a5f6f242d5ff6041e..6cc3cef48aa2fef840fe9fea714f460097999f8f 100644
--- a/src/RingWizardLinkAccountVC.mm
+++ b/src/RingWizardLinkAccountVC.mm
@@ -119,11 +119,11 @@
                                            if(accountID.compare(accountToCreate) != 0) {
                                                return;
                                            }
-                                          [self.delegate didLinkAccountWithSuccess:YES];
                                           lrc::api::account::ConfProperties_t accountProperties = self.accountModel->getAccountConfig(accountID);
                                           accountProperties.Ringtone.ringtonePath = QString::fromNSString(defaultRingtonePath());
                                           self.accountModel->setAccountConfig(accountID, accountProperties);
                                           [self registerDefaultPreferences];
+                                          [self.delegate didLinkAccountWithSuccess: YES accountId: accountToCreate];
                                           QObject::disconnect(accountCreated);
                                           QObject::disconnect(accountRemoved);
                                       });
@@ -156,7 +156,7 @@
 
 - (IBAction)dismissViewWithError:(id)sender
 {
-    [self.delegate didLinkAccountWithSuccess:NO];
+    [self.delegate didLinkAccountWithSuccess: NO accountId:""];
 }
 
 - (IBAction)pickBackupFile:(id)sender
diff --git a/src/RingWizardWC.h b/src/RingWizardWC.h
index 685a24ce297729ea6722de0af604a1f9a975a2fc..769a55892a1df6ee63cd115b699c687a877237e2 100644
--- a/src/RingWizardWC.h
+++ b/src/RingWizardWC.h
@@ -25,6 +25,11 @@
 #import "AddSIPAccountVC.h"
 #import "ConnectToAccManagerVC.h"
 #import "AccountBackupVC.h"
+#include <qstring.h>
+
+@protocol AccountCreationDelegate <NSObject>
+- (void)accountCreated:(QString)accountId;
+@end
 
 @interface RingWizardWC : NSWindowController <NSWindowDelegate, NSPathControlDelegate,
     NSOpenSavePanelDelegate, RingWizardChooseDelegate, RingWizardNewDelegate,
@@ -35,4 +40,5 @@ LrcModelsProtocol>
 - (void)showLinkAccountVC;
 - (void)showSIPAccountVC;
 - (void)showConnectToAccountManager;
+@property (weak, nonatomic) id <AccountCreationDelegate> delegate;
 @end
diff --git a/src/RingWizardWC.mm b/src/RingWizardWC.mm
index 7a600d79d9936407b54cd08b21262216e73e3393..d5328d9e3d680fa627b1844249ec96981b60e640 100644
--- a/src/RingWizardWC.mm
+++ b/src/RingWizardWC.mm
@@ -204,19 +204,37 @@
         return;
     }
     [self showBackUpAccount: accountId];
+    if (success) {
+        [self.delegate accountCreated: accountId];
+    }
+}
+
+#pragma - AddSIPAccountDelegate methods
+
+- (void)completedWithSuccess:(BOOL)success accountId:(const QString &)accountId; {
+    [self completedWithSuccess:success];
+    if (success) {
+        [self.delegate accountCreated: accountId];
+    }
 }
 
 #pragma - WizardLinkAccountDelegate methods
 
-- (void)didLinkAccountWithSuccess:(BOOL)success
+- (void)didLinkAccountWithSuccess:(BOOL)success accountId:(const QString &)accountId
 {
     [self completedWithSuccess:success];
+    if (success) {
+        [self.delegate accountCreated: accountId];
+    }
 }
 
 #pragma - RingWizardAccManagerDelegate
 
-- (void)didSignInSuccess:(BOOL)success {
+- (void)didSignInSuccess:(BOOL)success accountId:(const QString &)accountId {
     [self completedWithSuccess:success];
+    if (success) {
+        [self.delegate accountCreated: accountId];
+    }
 }
 
 - (void)showBackUpAccount:(const QString&)accountId{