diff --git a/src/contacts-esd-setup.c b/src/contacts-esd-setup.c
index 3560c59..6655eb0 100644
--- a/src/contacts-esd-setup.c
+++ b/src/contacts-esd-setup.c
@@ -94,6 +94,43 @@ eds_source_credentials_required_cb (ESourceRegistry *registry,
   }
 }
 
+static void
+eds_source_get_last_credentials_required_arguments_cb (GObject *source_object,
+                                                       GAsyncResult *result,
+                                                       gpointer user_data)
+{
+  ECredentialsPrompter *credentials_prompter = user_data;
+  ESource *source;
+  ESourceCredentialsReason reason = E_SOURCE_CREDENTIALS_REASON_UNKNOWN;
+  gchar *certificate_pem = NULL;
+  GTlsCertificateFlags certificate_errors = 0;
+  GError *op_error = NULL;
+  GError *error = NULL;
+
+  g_return_if_fail (E_IS_SOURCE (source_object));
+
+  source = E_SOURCE (source_object);
+
+  if (!e_source_get_last_credentials_required_arguments_finish (source, result, &reason,
+          &certificate_pem, &certificate_errors, &op_error, &error)) {
+    /* Can be cancelled only if the application is disposing/disposed */
+    if (error && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+      eds_show_source_error (G_STRFUNC, "Failed to get last credentials required arguments for", source, error);
+    }
+
+    g_clear_error (&error);
+    return;
+  }
+
+  g_return_if_fail (E_IS_CREDENTIALS_PROMPTER (credentials_prompter));
+
+  if (reason != E_SOURCE_CREDENTIALS_REASON_UNKNOWN)
+    eds_source_credentials_required_cb (NULL, source, reason, certificate_pem, certificate_errors, op_error, credentials_prompter);
+
+  g_free (certificate_pem);
+  g_clear_error (&op_error);
+}
+
 ESourceRegistry *eds_source_registry = NULL;
 static ECredentialsPrompter *eds_credentials_prompter = NULL;
 
@@ -128,8 +165,12 @@ gboolean contacts_ensure_eds_accounts (void)
     ESource *source = E_SOURCE (link->data);
 
     /* Mark for skip also currently disabled sources */
-    if (!e_source_has_extension (source, E_SOURCE_EXTENSION_ADDRESS_BOOK))
+    if (!e_source_has_extension (source, E_SOURCE_EXTENSION_ADDRESS_BOOK) &&
+        !e_source_has_extension (source, E_SOURCE_EXTENSION_COLLECTION))
       e_credentials_prompter_set_auto_prompt_disabled_for (eds_credentials_prompter, source, TRUE);
+    else
+      e_source_get_last_credentials_required_arguments (source, NULL,
+         eds_source_get_last_credentials_required_arguments_cb, eds_credentials_prompter);
   }
 
   g_list_free_full (list, g_object_unref);
@@ -144,8 +185,13 @@ gboolean contacts_ensure_eds_accounts (void)
     ESource *source = E_SOURCE (link->data), *cred_source;
 
     cred_source = e_source_credentials_provider_ref_credentials_source (credentials_provider, source);
-    if (cred_source && !e_source_equal (source, cred_source))
+    if (cred_source && !e_source_equal (source, cred_source)) {
       e_credentials_prompter_set_auto_prompt_disabled_for (eds_credentials_prompter, cred_source, FALSE);
+      if (e_source_get_connection_status (cred_source) == E_SOURCE_CONNECTION_STATUS_SSL_FAILED) {
+        e_source_get_last_credentials_required_arguments (cred_source, NULL,
+           eds_source_get_last_credentials_required_arguments_cb, eds_credentials_prompter);
+      }
+    }
     g_clear_object (&cred_source);
   }
 
