29.10.2012, 11:27 | #1 |
Заноза в заднице
|
Проблема выбора импортированной организации для клиента Outlook (Аутлук) CRM 2011
Дано: развертывание MS CRM 2011 с несколькими организациями, одна из которых создана импортом из существующей рабочей организации в другом развертывании.
Необходимо: настроить клиент Outlook для работы с импортированной организацией. Проблема: при настройке организации в мастере настройки клиента outlook в разделе "Сведения о сервере" вношу данные URL-адреса сервера, успешно выполняю проверку подключения, но в списке выбора организации вижу все организации, кроме той, которая была добавлена импортом. Пробовал делать дезактивацию с повторной активацией организации, попутно изменив свойства организации - безрезультатно. Пробовал также в веб-клиенте изменять системные настройки связанные с синхронизацией outlook - также безрезультатно. Заглядывал в базу конфигурации, но усмотрел только одно различие названной организации со всеми остальными (которые отображаются) - свойство PartitionNumber имело значение NULL, но и изменение на 0 тоже ни к чему особо не привело: веб-приложение работает, в списке мастера настройки аутлук-клиента организация не отображается.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
29.10.2012, 11:58 | #2 |
Moderator
|
Пользователь под которым производится подключение добавлен в нужную организацию? Outlook клиент получает параметры из Deployment сервиса, а именно делает GetUserOrgs (сейчас, о ужас, нет под рукой SDK чтобы посмотреть точно). Если пользователь не заведен в конкретной организации, к ней подключиться и не предложат
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: Likefire (1). |
29.10.2012, 12:31 | #3 |
Заноза в заднице
|
Разобрался
Благодарю за быстрый отклик Артема и всех, кто хоть и не запостил ответа, начал тратить собственное время на решение моей проблемы.
Разобрался самостоятельно, хоть решение проблемы явно и не описано. Чтобы не растекаться, скажу, что в процессе гугленья наткнулся на вот статью по ссылке: http://quantusdynamics.blogspot.ru/2...e-outlook.html Статью прочел и меня заинтересовал абзац, в котором говорится: Цитата:
However if you are in a situation which the user mappings are correct but the organization ID has changed, you just need to update the registry key OrgID on the users local computer with the new Orgnization OrgID. This will enable the outlook clients to re-connect successfully.
То есть: таки да - дело в том, что организация была импортирована из существующей, но проблема не в данных собственно организации на сервере, а дело в настройках клиента, который исключает возможность настройки синхронизации для одной организации более одного раза.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
29.10.2012, 12:49 | #4 |
Заноза в заднице
|
А тут вдруг возник вопрос...
Коллеги, подскажите, кто знает: как корректно изменить OrgID в БД организации?
Естественно, я понимаю, что вносить правки "по живому" недопустимо. Поэтому последовательность по исключению организации из развертывания в ответе можно опустить. Интересует только имя таблицы/таблиц и наименования атрибутов.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
29.10.2012, 14:05 | #5 |
Заноза в заднице
|
Корректное изменение Organization ID
Ответ на этот вопрос тоже найден самостоятельно. Подробный разговор на эту тему здесь: http://social.microsoft.com/Forums/e...-22ffb8b7071c/
Но скрипт, которым воспользовался, такой: X++: DECLARE @OldOrganizationId uniqueidentifier, @NewOrganizationId uniqueidentifier -- The Old OrganizationId SET @OldOrganizationId = (SELECT TOP(1) OrganizationId FROM OrganizationBase) -- The New OrganizationId SET @NewOrganizationId = (SELECT NEWID()) --PRINT @OldOrganizationId --PRINT @NewOrganizationId -- Table with all Found Columns with the OrganizationId DECLARE @FoundOrganizationIds TABLE (Id bigint identity(1,1), TableName nvarchar(max), ColumnName nvarchar(max), ColumnValue nvarchar(max)) -- Table with all uniqueidentifier Columns in the Database DECLARE @FoundUniqueIdentifierColumns TABLE(Id bigint identity(1,1), TableName nvarchar(max), ColumnName nvarchar(max)) -- Search for all uniqueidentifier Columns in the Database INSERT INTO @FoundUniqueIdentifierColumns SELECT col.TABLE_NAME, col.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLES tbl INNER JOIN INFORMATION_SCHEMA.COLUMNS col ON tbl.TABLE_NAME = col.TABLE_NAME WHERE tbl.TABLE_TYPE = 'BASE TABLE' AND col.DATA_TYPE IN ('uniqueidentifier') DECLARE @ColumnCount bigint SET @ColumnCount = (SELECT COUNT(*) FROM @FoundUniqueIdentifierColumns) -- PRINT CAST(@ColumnCount as nvarchar) DECLARE @Iterator bigint SET @Iterator = 1 -- Look through all found uniqueidentifier for the Old OrganizationId Columns and Save the TableName/ColumnName in @FoundOrganizationIds WHILE @Iterator <= @ColumnCount BEGIN DECLARE @execsql nvarchar(max) DECLARE @TableName nvarchar(max) DECLARE @ColumnName nvarchar(max) SET @TableName = (SELECT TableName FROM @FoundUniqueIdentifierColumns WHERE Id = @Iterator) SET @ColumnName = (SELECT ColumnName FROM @FoundUniqueIdentifierColumns WHERE Id = @Iterator) --PRINT(@TableName) --PRINT(@@ColumnName) SET @execsql = 'SELECT DISTINCT ' + CHAR(39) + @TableName + CHAR(39) + ',' SET @execsql = @execsql + CHAR(39) + @ColumnName + CHAR(39) + ',' SET @execsql = @execsql + @ColumnName SET @execsql = @execsql + ' FROM ' SET @execsql = @execsql + @TableName SET @execsql = @execsql + ' WHERE ' SET @execsql = @execsql + @ColumnName SET @execsql = @execsql + ' = ' + CHAR(39) + CAST(@OldOrganizationId as varchar(50)) + CHAR(39) INSERT INTO @FoundOrganizationIds (TableName, ColumnName, ColumnValue) -- PRINT (@execsql) EXEC (@execsql) SET @Iterator = @Iterator + 1 END -- SELECT * FROM @FoundOrganizationIds DECLARE @ColumnIterator bigint, @ColumnTotal bigint SET @ColumnIterator = 1 SET @ColumnTotal = (SELECT COUNT(id) FROM @FoundOrganizationIds) PRINT (@ColumnTotal) -- INSERT New Organization in the OrganizationTable with the new OrganizationId (Copy of the Old Organization but with the new Id) INSERT INTO [dbo].[OrganizationBase] ([OrganizationId] ,[Name] ,[UserGroupId] ,[PrivilegeUserGroupId] ,[FiscalPeriodType] ,[FiscalCalendarStart] ,[DateFormatCode] ,[TimeFormatCode] ,[CurrencySymbol] ,[WeekStartDayCode] ,[DateSeparator] ,[FullNameConventionCode] ,[NegativeFormatCode] ,[NumberFormat] ,[IsDisabled] ,[DisabledReason] ,[KbPrefix] ,[CurrentKbNumber] ,[CasePrefix] ,[CurrentCaseNumber] ,[ContractPrefix] ,[CurrentContractNumber] ,[QuotePrefix] ,[CurrentQuoteNumber] ,[OrderPrefix] ,[CurrentOrderNumber] ,[InvoicePrefix] ,[CurrentInvoiceNumber] ,[UniqueSpecifierLength] ,[CreatedOn] ,[ModifiedOn] ,[FiscalYearFormat] ,[FiscalPeriodFormat] ,[FiscalYearPeriodConnect] ,[LanguageCode] ,[SortId] ,[DateFormatString] ,[TimeFormatString] ,[PricingDecimalPrecision] ,[ShowWeekNumber] ,[NextTrackingNumber] ,[TagMaxAggressiveCycles] ,[TokenKey] ,[SystemUserId] ,[CreatedBy] ,[GrantAccessToNetworkService] ,[AllowOutlookScheduledSyncs] ,[AllowMarketingEmailExecution] ,[SqlAccessGroupId] ,[CurrencyFormatCode] ,[FiscalSettingsUpdated] ,[ReportingGroupId] ,[TokenExpiry] ,[ShareToPreviousOwnerOnAssign] ,[AcknowledgementTemplateId] ,[ModifiedBy] ,[IntegrationUserId] ,[TrackingTokenIdBase] ,[BusinessClosureCalendarId] ,[AllowAutoUnsubscribeAcknowledgement] ,[AllowAutoUnsubscribe] ,[Picture] ,[TrackingPrefix] ,[MinOutlookSyncInterval] ,[BulkOperationPrefix] ,[AllowAutoResponseCreation] ,[MaximumTrackingNumber] ,[CampaignPrefix] ,[SqlAccessGroupName] ,[CurrentCampaignNumber] ,[FiscalYearDisplayCode] ,[SiteMapXml] ,[IsRegistered] ,[ReportingGroupName] ,[CurrentBulkOperationNumber] ,[SchemaNamePrefix] ,[IgnoreInternalEmail] ,[TagPollingPeriod] ,[TrackingTokenIdDigits] ,[NumberGroupFormat] ,[LongDateFormatCode] ,[UTCConversionTimeZoneCode] ,[TimeZoneRuleVersionNumber] ,[CurrentImportSequenceNumber] ,[ParsedTablePrefix] ,[V3CalloutConfigHash] ,[IsFiscalPeriodMonthBased] ,[LocaleId] ,[ParsedTableColumnPrefix] ,[SupportUserId] ,[AMDesignator] ,[CurrencyDisplayOption] ,[MinAddressBookSyncInterval] ,[IsDuplicateDetectionEnabledForOnlineCreateUpdate] ,[FeatureSet] ,[BlockedAttachments] ,[IsDuplicateDetectionEnabledForOfflineSync] ,[AllowOfflineScheduledSyncs] ,[AllowUnresolvedPartiesOnEmailSend] ,[TimeSeparator] ,[CurrentParsedTableNumber] ,[MinOfflineSyncInterval] ,[AllowWebExcelExport] ,[ReferenceSiteMapXml] ,[IsDuplicateDetectionEnabledForImport] ,[CalendarType] ,[SQMEnabled] ,[NegativeCurrencyFormatCode] ,[AllowAddressBookSyncs] ,[ISVIntegrationCode] ,[DecimalSymbol] ,[MaxUploadFileSize] ,[IsAppMode] ,[EnablePricingOnCreate] ,[IsSOPIntegrationEnabled] ,[PMDesignator] ,[CurrencyDecimalPrecision] ,[MaxAppointmentDurationDays] ,[EmailSendPollingPeriod] ,[RenderSecureIFrameForEmail] ,[NumberSeparator] ,[PrivReportingGroupId] ,[BaseCurrencyId] ,[MaxRecordsForExportToExcel] ,[PrivReportingGroupName] ,[YearStartWeekCode] ,[IsPresenceEnabled] ,[IsDuplicateDetectionEnabled] ,[RecurrenceExpansionJobBatchInterval] ,[DefaultRecurrenceEndRangeType] ,[HashMinAddressCount] ,[RequireApprovalForUserEmail] ,[RecurrenceDefaultNumberOfOccurrences] ,[ModifiedOnBehalfBy] ,[RequireApprovalForQueueEmail] ,[AllowEntityOnlyAudit] ,[IsAuditEnabled] ,[RecurrenceExpansionSynchCreateMax] ,[GoalRollupExpiryTime] ,[BaseCurrencyPrecision] ,[FiscalPeriodFormatPeriod] ,[AllowClientMessageBarAd] ,[InitialVersion] ,[HashFilterKeywords] ,[NextCustomObjectTypeCode] ,[ExpireSubscriptionsInDays] ,[OrgDbOrgSettings] ,[PastExpansionWindow] ,[EnableSmartMatching] ,[MaxRecordsForLookupFilters] ,[BaseCurrencySymbol] ,[ReportScriptErrors] ,[RecurrenceExpansionJobBatchSize] ,[FutureExpansionWindow] ,[GetStartedPaneContentEnabled] ,[SampleDataImportId] ,[BaseISOCurrencyCode] ,[GoalRollupFrequency] ,[CreatedOnBehalfBy] ,[HashDeltaSubjectCount] ,[HashMaxCount] ,[FiscalYearFormatYear] ,[FiscalYearFormatPrefix] ,[PinpointLanguageCode] ,[FiscalYearFormatSuffix] ,[IsUserAccessAuditEnabled] ,[UserAccessAuditingInterval]) SELECT @NewOrganizationId, [Name] ,[UserGroupId] ,[PrivilegeUserGroupId] ,[FiscalPeriodType] ,[FiscalCalendarStart] ,[DateFormatCode] ,[TimeFormatCode] ,[CurrencySymbol] ,[WeekStartDayCode] ,[DateSeparator] ,[FullNameConventionCode] ,[NegativeFormatCode] ,[NumberFormat] ,[IsDisabled] ,[DisabledReason] ,[KbPrefix] ,[CurrentKbNumber] ,[CasePrefix] ,[CurrentCaseNumber] ,[ContractPrefix] ,[CurrentContractNumber] ,[QuotePrefix] ,[CurrentQuoteNumber] ,[OrderPrefix] ,[CurrentOrderNumber] ,[InvoicePrefix] ,[CurrentInvoiceNumber] ,[UniqueSpecifierLength] ,[CreatedOn] ,[ModifiedOn] ,[FiscalYearFormat] ,[FiscalPeriodFormat] ,[FiscalYearPeriodConnect] ,[LanguageCode] ,[SortId] ,[DateFormatString] ,[TimeFormatString] ,[PricingDecimalPrecision] ,[ShowWeekNumber] ,[NextTrackingNumber] ,[TagMaxAggressiveCycles] ,[TokenKey] ,[SystemUserId] ,[CreatedBy] ,[GrantAccessToNetworkService] ,[AllowOutlookScheduledSyncs] ,[AllowMarketingEmailExecution] ,[SqlAccessGroupId] ,[CurrencyFormatCode] ,[FiscalSettingsUpdated] ,[ReportingGroupId] ,[TokenExpiry] ,[ShareToPreviousOwnerOnAssign] ,[AcknowledgementTemplateId] ,[ModifiedBy] ,[IntegrationUserId] ,[TrackingTokenIdBase] ,[BusinessClosureCalendarId] ,[AllowAutoUnsubscribeAcknowledgement] ,[AllowAutoUnsubscribe] ,[Picture] ,[TrackingPrefix] ,[MinOutlookSyncInterval] ,[BulkOperationPrefix] ,[AllowAutoResponseCreation] ,[MaximumTrackingNumber] ,[CampaignPrefix] ,[SqlAccessGroupName] ,[CurrentCampaignNumber] ,[FiscalYearDisplayCode] ,[SiteMapXml] ,[IsRegistered] ,[ReportingGroupName] ,[CurrentBulkOperationNumber] ,[SchemaNamePrefix] ,[IgnoreInternalEmail] ,[TagPollingPeriod] ,[TrackingTokenIdDigits] ,[NumberGroupFormat] ,[LongDateFormatCode] ,[UTCConversionTimeZoneCode] ,[TimeZoneRuleVersionNumber] ,[CurrentImportSequenceNumber] ,[ParsedTablePrefix] ,[V3CalloutConfigHash] ,[IsFiscalPeriodMonthBased] ,[LocaleId] ,[ParsedTableColumnPrefix] ,[SupportUserId] ,[AMDesignator] ,[CurrencyDisplayOption] ,[MinAddressBookSyncInterval] ,[IsDuplicateDetectionEnabledForOnlineCreateUpdate] ,[FeatureSet] ,[BlockedAttachments] ,[IsDuplicateDetectionEnabledForOfflineSync] ,[AllowOfflineScheduledSyncs] ,[AllowUnresolvedPartiesOnEmailSend] ,[TimeSeparator] ,[CurrentParsedTableNumber] ,[MinOfflineSyncInterval] ,[AllowWebExcelExport] ,[ReferenceSiteMapXml] ,[IsDuplicateDetectionEnabledForImport] ,[CalendarType] ,[SQMEnabled] ,[NegativeCurrencyFormatCode] ,[AllowAddressBookSyncs] ,[ISVIntegrationCode] ,[DecimalSymbol] ,[MaxUploadFileSize] ,[IsAppMode] ,[EnablePricingOnCreate] ,[IsSOPIntegrationEnabled] ,[PMDesignator] ,[CurrencyDecimalPrecision] ,[MaxAppointmentDurationDays] ,[EmailSendPollingPeriod] ,[RenderSecureIFrameForEmail] ,[NumberSeparator] ,[PrivReportingGroupId] ,[BaseCurrencyId] ,[MaxRecordsForExportToExcel] ,[PrivReportingGroupName] ,[YearStartWeekCode] ,[IsPresenceEnabled] ,[IsDuplicateDetectionEnabled] ,[RecurrenceExpansionJobBatchInterval] ,[DefaultRecurrenceEndRangeType] ,[HashMinAddressCount] ,[RequireApprovalForUserEmail] ,[RecurrenceDefaultNumberOfOccurrences] ,[ModifiedOnBehalfBy] ,[RequireApprovalForQueueEmail] ,[AllowEntityOnlyAudit] ,[IsAuditEnabled] ,[RecurrenceExpansionSynchCreateMax] ,[GoalRollupExpiryTime] ,[BaseCurrencyPrecision] ,[FiscalPeriodFormatPeriod] ,[AllowClientMessageBarAd] ,[InitialVersion] ,[HashFilterKeywords] ,[NextCustomObjectTypeCode] ,[ExpireSubscriptionsInDays] ,[OrgDbOrgSettings] ,[PastExpansionWindow] ,[EnableSmartMatching] ,[MaxRecordsForLookupFilters] ,[BaseCurrencySymbol] ,[ReportScriptErrors] ,[RecurrenceExpansionJobBatchSize] ,[FutureExpansionWindow] ,[GetStartedPaneContentEnabled] ,[SampleDataImportId] ,[BaseISOCurrencyCode] ,[GoalRollupFrequency] ,[CreatedOnBehalfBy] ,[HashDeltaSubjectCount] ,[HashMaxCount] ,[FiscalYearFormatYear] ,[FiscalYearFormatPrefix] ,[PinpointLanguageCode] ,[FiscalYearFormatSuffix] ,[IsUserAccessAuditEnabled] ,[UserAccessAuditingInterval] FROM [dbo].[OrganizationBase] WHERE OrganizationId = @OldOrganizationId -- Loop through the Found Columns and Update them with the new OrganizationId WHILE @ColumnIterator <= @ColumnTotal BEGIN DECLARE @CurrentTable nvarchar(max) DECLARE @CurrentColumn nvarchar(max) SET @CurrentTable = (SELECT TableName FROM @FoundOrganizationIds WHERE Id = @ColumnIterator) SET @CurrentColumn = (SELECT ColumnName FROM @FoundOrganizationIds WHERE Id = @ColumnIterator) --PRINT (@CurrentTable) --PRINT (@CurrentColumn) -- Skip the OrganizationBase table now, since we have allready added the new OrganizationId IF @CurrentTable <> 'OrganizationBase' BEGIN DECLARE @UpdateScript nvarchar(max) SET @UpdateScript = ' UPDATE ' + @CurrentTable + ' SET ' + @CurrentColumn + ' = ' + CHAR(39) + CAST(@NewOrganizationId as varchar(50)) + CHAR(39) + ' WHERE ' + @CurrentColumn + ' = ' + CHAR(39) + CAST(@OldOrganizationId as varchar(50))+ CHAR(39) -- PRINT (@UpdateScript) EXEC (@UpdateScript) END SET @ColumnIterator = @ColumnIterator + 1 END -- Delete the Old Organization from the OrganizationBase DELETE FROM OrganizationBase WHERE OrganizationId = @OldOrganizationId
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
|
За это сообщение автора поблагодарили: Артем Enot Грунин (3). |
|
|