diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml
index 8554b84c3464ea0b8c4d39077c5eee97423c77f2..07e795ba74c8b78ff6cf022c618ebac15b1932e2 100644
--- a/src/constant/JamiStrings.qml
+++ b/src/constant/JamiStrings.qml
@@ -92,6 +92,7 @@ Item {
 
     // AdvancedConnectivitySettings
     property string connectivity: qsTr("Connectivity")
+    property string autoRegistration: qsTr("Auto Registration After Expired")
     property string registrationTimeOut: qsTr("Registration expire timeout (seconds)")
     property string networkInterface: qsTr("Network interface")
     property string useUPnP: qsTr("Use UPnP")
diff --git a/src/settingsadapter.cpp b/src/settingsadapter.cpp
index 60957fb8b578eea05c4ece1872c67f1ae849c692..e81c45f3684d8a91c186330897f5432a6e9f439d 100644
--- a/src/settingsadapter.cpp
+++ b/src/settingsadapter.cpp
@@ -318,6 +318,12 @@ SettingsAdapter::getAccountConfig_Password()
     return getAccountConfig().password;
 }
 
+bool
+SettingsAdapter::getAccountConfig_KeepAliveEnabled()
+{
+    return getAccountConfig().keepAliveEnabled;
+}
+
 QString
 SettingsAdapter::getAccountConfig_RouteSet()
 {
@@ -656,6 +662,14 @@ SettingsAdapter::setEnableProxy(bool state)
     LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
 }
 
+void
+SettingsAdapter::setKeepAliveEnabled(bool state)
+{
+    auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
+    confProps.keepAliveEnabled = state;
+    LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), confProps);
+}
+
 void
 SettingsAdapter::setUseUPnP(bool state)
 {
diff --git a/src/settingsadapter.h b/src/settingsadapter.h
index d1b216d209004cc6dd657d5d19ce870db1d446fe..405b7385407293b0f203bb454c8a3369fcd69347 100644
--- a/src/settingsadapter.h
+++ b/src/settingsadapter.h
@@ -108,6 +108,7 @@ public:
     Q_INVOKABLE QString getAccountConfig_Hostname();
     Q_INVOKABLE QString getAccountConfig_Password();
 
+    Q_INVOKABLE bool getAccountConfig_KeepAliveEnabled();
     Q_INVOKABLE QString getAccountConfig_RouteSet();
     Q_INVOKABLE QString getAccountConfig_ProxyServer();
     Q_INVOKABLE bool getAccountConfig_ProxyEnabled();
@@ -175,6 +176,7 @@ public:
     Q_INVOKABLE void setAutoAnswerCalls(bool state);
     Q_INVOKABLE void setEnableRingtone(bool state);
     Q_INVOKABLE void setEnableProxy(bool state);
+    Q_INVOKABLE void setKeepAliveEnabled(bool state);
     Q_INVOKABLE void setUseUPnP(bool state);
     Q_INVOKABLE void setUseTURN(bool state);
     Q_INVOKABLE void setUseSTUN(bool state);
diff --git a/src/settingsview/components/AdvancedConnectivitySettings.qml b/src/settingsview/components/AdvancedConnectivitySettings.qml
index bd12ab3474aba27c5694c2f200b830336f1ee81e..1ea4164e77d7ce400191f426caee37e2940068db 100644
--- a/src/settingsview/components/AdvancedConnectivitySettings.qml
+++ b/src/settingsview/components/AdvancedConnectivitySettings.qml
@@ -36,6 +36,7 @@ ColumnLayout {
     property bool isSIP
 
     function updateConnectivityAccountInfos() {
+        autoRegistrationAfterExpired.checked = SettingsAdapter.getAccountConfig_KeepAliveEnabled()
         registrationExpireTimeoutSpinBox.setValue(SettingsAdapter.getAccountConfig_Registration_Expire())
         networkInterfaceSpinBox.setValue(SettingsAdapter.getAccountConfig_Localport())
         checkBoxUPnP.checked = SettingsAdapter.getAccountConfig_UpnpEnabled()
@@ -64,6 +65,18 @@ ColumnLayout {
         Layout.fillWidth: true
         Layout.leftMargin: JamiTheme.preferredMarginSize
 
+        ToggleSwitch {
+            id: autoRegistrationAfterExpired
+
+            Layout.fillWidth: true
+
+            visible: isSIP
+            labelText: JamiStrings.autoRegistration
+            fontPointSize: JamiTheme.settingsFontSize
+
+            onSwitchToggled: SettingsAdapter.setKeepAliveEnabled(checked)
+        }
+
         SettingSpinBox {
             id: registrationExpireTimeoutSpinBox
             visible: isSIP