/// <summary>
        /// Creates a credential manager based on the migration source configuration
        /// </summary>
        /// <param name="credManagementService"></param>
        /// <param name="migrationSourceConfig"></param>
        /// <returns>Created credential manager</returns>
        /// <exception cref="">ClearQuestAdapter.Exceptions.ClearQuestInvalidConfigurationException</exception>
        public static ICQLoginCredentialManager CreateCredentialManager(
            ICredentialManagementService credManagementService,
            MigrationSource migrationSourceConfig)
        {
            if (null != credManagementService &&
                credManagementService.IsMigrationSourceConfiguredToUseStoredCredentials(new Guid(migrationSourceConfig.InternalUniqueId)))
            {
                if (OSIsNotSupported())
                {
                    throw new System.NotSupportedException(ClearQuestResource.StoredCredentialNotSupported);
                }

                return(new CQStoredCredentialManager(credManagementService, migrationSourceConfig));
            }
            else
            {
                foreach (var setting in migrationSourceConfig.CustomSettings.CustomSetting)
                {
                    if (setting.SettingKey.Equals(ClearQuestConstants.LoginCredentialSettingKey, StringComparison.Ordinal))
                    {
                        return(GetTypedCredentialManager(setting.SettingValue, migrationSourceConfig));
                    }
                }

                throw new ClearQuestInvalidConfigurationException(ClearQuestResource.ClearQuest_Config_MissingLoginCredentialSettingType);
            }
        }