Обратиться к этой теме меня заставил вопрос пользователя о синхронизации эскизов фотографий между всеми рабочими приложениями Office 365. Действительно, интеграция между Exchange Online и Skype для бизнеса осуществляется безукоризненно, тогда как ситуация с SharePoint Online не совсем понятна. Приведу вопрос читателя целиком:

«В Exchange все просто, и процесс загрузки фотографий в Active Directory понятен. Этот процесс успешно выполнялся в локальной среде, но теперь, когда мы используем гибридную среду, фотографии синхронизируются с Azure Active Directory. Пользователи Exchange Online видят свои фотографии в глобальном списке адресов (GAL), но в SharePoint Online следов их присутствия нет. Разве синхронизация с Azure Active Directory не обеспечивает доступность эскизов по всем рабочим приложениям Office 365?»

Будучи простым по сути, этот вопрос обнаруживает ряд проблем Office 365, сохраняющихся уже на протяжении пяти лет после запуска службы.

Прежде всего, передавать эскизы своих фотографий в Active Directory или Azure Active Directory можно из браузера с использованием одного из вариантов подписки на Office 365, или веб-приложений Outlook в случае подключения к локальному серверу Exchange (см. статью по адресу: support.microsoft.com/en-us/kb/2986893). Администраторы для загрузки фотографий в формате JPEG в учетные записи пользователя, вероятнее всего, пользуются командой Set-UserPhoto. Эта команда может запускаться и в рамках автоматизированного поступления данных, например от системы управления персоналом:

Set-UserPhoto "Kim Akers" -PictureData
   ([System.IO.File]:: ReadAllBytes ("C:\Temp\KA.jpg"))

При первоначальном запуске Office 365 для Exchange Online было предусмотрено ограничение размера загружаемых эскизов величиной 10 Кбайт. Этот предел по-прежнему указан в некоторых документах в Интернете. В самом деле, при попытке загрузить файл большего размера с помощью Set-UserPhoto будет выдана ошибка (см. экран 1).

 

Ошибка Set-UserPhoto при попытке загрузки файла размером более 10 Кбайт
Экран 1. Ошибка Set-UserPhoto при попытке загрузки файла размером более 10 Кбайт 

Ограничение в 10 Кбайт налагает Azure Active Directory, и это объясняется тем, что Azure Active Directory — ресурс, коллективно используемый несколькими рабочими приложениями. Для Exchange 2013 это правило изменили, и был предусмотрен метод поддержки загрузки фотографий с более высоким разрешением, который мог использоваться Skype для бизнеса или Lync.

Как говорится в статье MVP Джеффа Гийе (см. http://www.expta.com/2012/12/working-with-hi-res-photos-in-exchange.html), начиная с Exchange 2013 сохраняются две версии загружаемых эскизов. Во-первых, создается версия с разрешением 96x96 точек, сохраняемая в атрибуте thumbnailPhoto для учетной записи пользователя Azure Active Directory. Эта версия имеет размер менее 10 Кбайт, то есть укладывается в упомянутое выше ограничение. Во-вторых, создается версия с более высоким разрешением, 648x648, сохраняемая в почтовом ящике пользователя.

Иногда необходимость уменьшать фотографии перед отправкой в Exchange Online бывает обременительной, но есть способ заставить сервер принять файлы большего размера. Для этого необходимо подключиться к Exchange Online PowerShell через метод прокси-RPS. Как настроить сеанс, показано ниже. Отметим квалификатор? proxyMethod=RPS в составе URI-подключения. Как показано на экране 2, после установления сеанса с помощью команды Set-UserPhoto можно импортировать файлы фотографий большего размера.

$UserCredential = Get-Credential
$Session = New-PSSession
   -ConfigurationName Microsoft.Exchange
   -ConnectionUri ttps://outlook.office365.
   com/powershell-liveid/?proxyMethod=RPS
   -Credential $UserCredential
   -Authentication Basic -AllowRedirection
Import-PSSession $Session
Set-UserPhoto -Identity TRedmond
   -PictureData ([System.IO. File]::
   ReadAllBytes ("C:\Temp\LargeTRPhotojpg"))

 

Успешная передача графического файла с помощью Set-UserPhoto
Экран 2. Успешная передача графического файла с помощью Set-UserPhoto

MVP Джеймс Кассен создал инструмент, позволяющий подготовить фотографии к загрузке в Office 365. Описание инструмента приведено в двух частях (часть 1 доступна по адресу: http://www.myskypelab.com/2015/02/photos-part-1-lync-skype-for-business.html, часть 2 — по адресу: http://www.myskypelab.com/2015/04/photos-part-2-exchange-active-directory.html).

Итак, теперь мы знаем, как при работе с Exchange Online и в локальной среде Exchange выполнить загрузку эскизов фотографий так, чтобы передавались качественные фотографии всех, кто в этом заинтересован. В гибридной среде процесс синхронизации каталогов будет осуществлять пересылку эскизов вместе с учетными записями пользователей, только если их размер не будет превышать 10 Кбайт (в коллекции сценариев Microsoft есть сценарий проверки для выявления эскизов большего размера, (см. https://redmondassociates.sharepoint.com/Projects/Blog%20Posts/Once%20the%20session%20is%20established,%20you%20can%20import%20large%20photo%20files%20with%20Set-UserPhoto). Версия эскиза с более высоким разрешением передается вместе с другим содержимым почтового ящика при перемещении почтового ящика из локальной среды в «облако» и наоборот.

Что касается других рабочих нагрузок Office 365, то Azure Active Directory — ведущая служба каталогов, но каждая рабочая нагрузка имеет собственный каталог, и актуальность всех каталогов поддерживается с использованием процессов синхронизации. У SharePoint Online есть SPODS, у Skype для бизнеса — LYODS, у Exchange Online — EXODS, у Yammer тоже есть собственный каталог и т. д. Отдельные каталоги рабочих нагрузок позволяют приложениям хранить свои уникальные свойства и объекты, не обращаясь постоянно к Azure Active Directory.

Таким образом, создание сценариев применения команды Set-UserPhoto — самый простой способ обработки массовых загрузок фотографий, и если эскизы пользователя загружаются в Exchange, то желательно, чтобы фотографии синхронизировались с другими рабочими нагрузками. Увы, при кажущейся простоте, на практике это оказывается затруднительным. По крайней мере, синхронизация не работает так хорошо, как должна, если учесть, что Office 365 существует уже почти пять лет.

Помимо рассмотрения синхронизации свойств, например, телефонных номеров, между всеми рабочими нагрузками, я не уделял особого внимания эскизам пользователей. Однако после прочтения опубликованного на ThreeWill сообщения (http://www.threewill.com/user-photo-sync-behavior-in-office-365/) меня заинтересовала эта проблема. Сообщение датируется апрелем 2014 года, но с тех пор, по-видимому, мало что изменилось.

Итак, Exchange Online и Skype для бизнеса демонстрируют хорошую интеграцию в отношении обновления эскизов пользователей, но SharePoint Online работает по собственным правилам, и, прежде чем эскизы там «нарисуются», необходимо выполнить определенные действия. В частности, требуется отредактировать профиль Delve и кое-что сделать (по крайней мере, отменить обновление профиля), прежде чем фотография, первоначально загруженная через Exchange Online, появится в среде SharePoint. Особенности Yammer я еще не изучил.

Словом, должен существовать более удобный путь. Так, как есть, не должно быть, учитывая всеобщую ориентацию на «облако». Я знаю, что Microsoft может работать лучше, но такие «мелкие ремонтные работы», вероятно, игнорируются из-за желания выдавать новые возможности пользователям моментально, как только они становятся минимально жизнеспособными.